1

我正在尝试从 SQL 文件列表中恢复 MySQL 转储,例如:

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

这个策略非常有效,但对于某个表却没有。实际上它会被阻塞很长时间,直到我终止命令。这是显示为“显示完整进程列表”的状态

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 TIME_ZONE=@OLD_TIME_ZONE */;

它使用 MyISAM 作为引擎,所以我不知道如何检查某处是否有锁......我可以从 MySQL 管理员那里看到的状态是:

Waiting for table

我试过删除数据库,用相同的结果重新创建它...... :(

有人有任何线索吗?

非常感谢

4

1 回答 1

0

我看到你正在使用 LOCK TABLES ms_lims_propertiesWRITE;

所以如果你在插入之前锁定你的表,那么你不能插入,因为表被锁定了。

于 2013-04-08T17:46:54.403 回答