1

いくつかの項目を mysql db に挿入したいと考えています。

Pythonスクリプトでそれを行ったとき、次のようになりました。

エラー 1062: キー 'product_code' のエントリ '222' が重複しています。product_code は一意のフィールドです。

私がmysqlコマンドラインでそれをしたとき、私は得ました:

エラー 1205(HY000):ロック待機タイムアウトを超えました。トランザクションを再開してみてください。

Mysql は win32 にインストールされています。テーブルのエンジンは innodb です。

コード:

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2
cur.execute(sql2)

cur.close()
4

2 に答える 2

0

ここで、前のテーブルと同じテーブルを再作成します。スクリプトではエラーは報告されていませんが、実際にはデータは挿入されていません。コマンドラインで、insertsqlは完全に機能します。

MySqlDbはデフォルトで自動コミットされるため、InnoDBなどのトランザクションエンジンを使用すると、データは保存されません。実際にデータをデータベースに保存するには、commitを呼び出す必要があります

conn = mdb.connect(user = 'root', passwd = '[REMOVED]', db = 'vancl')
cur = conn.cursor()

sql2 = "insert into vancl.vancl_query1(product_code) values('100000')"
print sql2

cur.execute(sql2)

//Commit the data
conn.commit() 

cur.close()
于 2012-06-15T04:03:23.090 に答える
0

これは、product_code列に一意のインデックス制約が設定されていることを意味します。ユニーク インデックス制約は、フィールドが重複する値を持つことができない、つまり各フィールドが一意でなければならないことを MySQL に伝えます。そこにあるのは、値 222 が列のどこかに既に存在する場合に、値 222 を product_code に挿入しようとしたことによる「重複エントリ」エラーです。

于 2012-06-15T02:15:53.383 に答える