私はmysql 5.5、python 2.7、pymysql、os x 10.6.8で非常に奇妙なことをしています
私は mysql テーブルの ID、名前、ファジーを持っています。次のようなpythonリストを生成しました
cursor.execute('select id, SOUNDEX(name) from categorie')
result = [i for i in cursor.fetchall()]
次に、ファジー フィールドを更新します。
for i in result:
try:
cursor.execute("""update categorie set fuzzy='%s' where id='%s' % (i[1], i[0]))
except pymysql.MySqlError, e:
print e
コードを実行した後、エラーが発生しました。これは、クエリが正常に実行されたことを意味します。DB に変更はありませんが、最も興味深いのは、Python コードが実行された後、Mysql サーバーがどの種類のクライアントからも更新クエリを実行しなくなったことです。
ロック待機タイムアウトを超えました。トランザクションを再開してみてください
選択クエリを正常に実行することしかできません。実際には、mysqlサーバーを再起動する必要があり、その後でのみ更新クエリが正常に実行されますが、pythonクエリコードを実行するとすぐに再生が再開されます。
ウィンドウマシンのmysqlサーバーでもこれを試しましたが、結果は同じでした。また、MySqlDb を使用して pymysql を変更しようとしましたが、結果も同じでした。