2013-04-08 106 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

相关问题