2013-04-08 72 views
1

我試圖還原一個MySQL從列表轉儲SQL文件如:如何知道是否有一個已經鎖定表的MySQL

for file in *.sql; do mysql ... < $file;done 

這種策略完美的作品,但對於某個表沒有關係「T。實際上它會一直保持阻塞狀態,直到我終止命令。 這裏是顯示的狀態「SHOW FULL PROCESSLIST」

LOCK TABLES `ms_lims_properties` WRTIE 

我無法解釋爲什麼我的負荷保持鎖定這樣,那裏的表應只包含5行。

下面是相應的SQL文件的樣本:

LOCK TABLES `ms_lims_properties` WRITE; 
/*!40000 ALTER TABLE ms_lims_properties DISABLE KEYS */; 
INSERT INTO ms_lims_properties VALUES (1... 
/*!40000 ALTER TABLE `ms_lims_properties` ENABLE KEYS */; 
UNLOCK TABLES; 
/*!40103 SET [email protected]_TIME_ZONE */; 

它使用MyISAM數據作爲引擎,所以我不知道如何來檢查是否有任何鎖的地方...... 狀態我可從MySQL管理員看到的是:

Waiting for table

我試圖刪除數據庫,具有相同的結果重新創建它... :(

有人有線索嗎?

非常感謝

回答

0

我看你使用LOCK TABLES ms_lims_properties WRITE;

因此,如果您在執行插入操作之前鎖定您的表格,那麼您無法在表格被鎖定時插入。

+0

嗨CloudyDna,實際上這組命令是由轉儲爲每個sql文件(1文件= 1表)創建並寫入每個文件。但是,其他表通常沒有任何鎖,例如'ms_lims_property'表的鎖。例如: 鎖定表'識別'寫; /*!40000 ALTER TABLE' identification' DISABLE KEYS * /; INSERT INTO'identification' VALUES(64115,1457842,44, – Emmanuel 2013-04-09 07:01:01

+0

會更容易理解,如果我可以自己查看服務器,然後可能會爲您修復它。因爲從這個問題我不能完全理解問題 – 2013-04-09 08:41:31

+0

問題是,表'ms_lims_properties'沒有用數據封裝,它很好創建,但它看起來像一旦表創建查詢'鎖定表...寫'卡住了很久,插入沒有完成 鎖定表的查詢被鎖定 這顯示正在運行'SHOW FULL PORCESSLIST' – Emmanuel 2013-04-09 09:06:55

相關問題