由于元数据锁定,无法重命名表

时间:2016-07-27 00:24:44

标签: mysql innodb

我正在尝试重命名一个表,但它总是挂起Waiting for table metadata lock。以下是我尝试这样做的方法:

start transaction;
RENAME TABLE `main_territorypricing` TO `main_territorypricing2`;
RENAME TABLE `main_territorypricing1` TO `main_territorypricing`;
COMMIT;

然而,第一个重命名声明无限期地挂起。我该如何重命名这两个表?

1 个答案:

答案 0 :(得分:2)

我非常确定RENAME TABLE会终止交易。

您可以在单个原子语句(无事务)中重命名:

RENAME TABLE `main_territorypricing`  TO `main_territorypricing2`,
             `main_territorypricing1` TO `main_territorypricing`;

它必须等待任何其他忙于任何表的连接;确保你没有放弃一些联系。