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 操作,我猜这个表很大,所以需要很长时间才能完成。如果您想清楚,最好删除并重新创建一个表(截断是第二个最佳选项)。

也有可能某些查询正在锁定您的表,您可以通过停止并再次启动 mysql 来清除该锁定(或通过查找正在执行该操作的查询并将其杀死)。

于 2013-10-22T15:32:17.393 回答