2012-05-03 3 views
0

私はバージョン2.7で動作するpythonアプリケーションを持っていますが、postgres 9.1とsqlalchemy 0.7を使用しています。SQL Alchemy + Postgres + Python Integrity Error

私が追加したからWXのPythonのGUIを持っていると私はアプリケーションを一つのキーのid増加を再起動するとitems.Theコードがうまく働いていたが、現在はいくつかの変更を行った後、私は今

$self.session.commit() 
$ File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 645, in commit 
$ File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 313, in commit 
$ File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 297, in _prepare_impl 
$ File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 1547, in flush 
$ File "build\bdist.win32\egg\sqlalchemy\orm\session.py", line 1616, in _flush 
$ File "build\bdist.win32\egg\sqlalchemy\orm\unitofwork.py", line 328, in execute 
$ File "build\bdist.win32\egg\sqlalchemy\orm\unitofwork.py", line 472, in execute 
$ File "build\bdist.win32\egg\sqlalchemy\orm\mapper.py", line 2291, in _save_obj 
$ File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1405, in execute 
$ File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1538, in   
$ _execute_clauseelement 
$ File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1646, in  
$_execute_context 
$ File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 1639, in 
$_execute_context 
$ File "build\bdist.win32\egg\sqlalchemy\engine\default.py", line 330, in do_execute 
$sqlalchemy.exc.IntegrityError: (IntegrityError) duplicate key value violates 
$ unique constraint "Equipment_pkey" 
$DETAIL: Key (id)=(4) already exists. 
$ 'INSERT INTO "Equipment" (name, "numPorts") VALUES (%(name)s, %(numPorts)s)  
$RETURNING "HWCIs".id' {'numPorts': 0, 'name': u'jkhj'} 

を受け取る削除。私は明らかに何かがデータベースのIDシーケンスをリセットしていることが分かります。 anypneは、この問題を解決するために、Pythonコードを書くか、この問題を克服するためのeasietのステップを教えてください。私はpsqlコマンドを使って作業を試みましたが、知識が不足していたために失敗しました。解決策が簡単な手順で説明できるのは素晴らしいことです。ログ内のすべてのものがあります

答えて

1

私は答えを見つけました。データベースシーケンスが1にリセットされる原因となった別のデータベース接続に直面していました。アプリケーションが起動すると、position 1が検索されます。だから、sequencelast noに変更するだけでした。出来た!

0

あなたは、ID = 4を持つ行を挿入しているが、このIDを持つ行がすでに存在しています。

テーブルにID = 4の行がありますか?