2013-10-22 162 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 –