0

python-mysql で作成した cars という名前のテーブルを削除するには、

import MySQLdb as mdb
con = mdb.connect('localhost', 'priceapi', 'data', 'carpricedb');
cur = con.cursor()
cur.execute("DELETE FROM cars");
con.commit()
con.close()    

しかし、私はこのようなエラーが発生します

Traceback (most recent call last):
File "delete.py", line 4, in <module>
cur.execute("DELETE FROM cars");
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in     defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction')

私のテーブルには78行しかありません。また、テーブルを切り捨ててみました。結果は同じです。mysql で直接実行しようとしましたが、コマンドが実行されず、Control+C を使用して強制終了する必要がありました。この 1 時間、いろいろ検索しましたが、解決策が見つかりませんでした。

何か助けてください?

4

1 に答える 1

1

削除は非常に非常に遅い SQL 操作であり、テーブルが巨大であるため、完了するまでに多くの時間がかかると思います。明確にしたい場合は、テーブルを削除して再作成することをお勧めします (切り捨ては 2 番目に良いオプションです)。

一部のクエリがテーブルをロックしている可能性もあります。mysql を停止してから再度開始することによって (または、どのクエリがそれを行っているかを見つけてそれを強制終了することによって)、そのロックを解除できます。

于 2013-10-22T15:32:17.393 に答える