2013-10-22 129 views
0

为了删除车表命名我在创建中的python-mysql的,我做删除蟒蛇MySQL问题

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小时内搜索了很多,但找不到解决方案。

请帮忙吗?

回答

1

删除是非常非常非常非常慢的SQL操作,我想表是巨大的,所以它需要很多时间才能完成。如果你想清除它,最好删除并重新创建表(截断是第二个最佳选项)。

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

+0

我试着截断表格。它不起作用。顺便说一句,我的桌子只有78行 –

+0

你是什么意思“它没有工作”?最快的方法是放下桌子然后重新创建,然后试试。 –

+0

mysql> TRUNCATE TABLE汽车; ^ CCtrl-C - 向服务器发送“KILL QUERY 158”... Ctrl-C - 查询中止。 错误1317(70100):查询执行中断 我等了10分钟才按下控件c –