应用程序死锁(ERROR 1213(40001))运行alter table命令时

时间:2016-01-15 22:31:24

标签: sql deadlock percona mysql-5.6

当我在alter table下运行时,仍在运行的应用程序正在遇到死锁:ERROR 1213(40001)在第2行:尝试锁定时发现死锁;尝试重新启动交易

查询:

ALTER TABLE `comm`
ADD COLUMN `thumb_url` varchar(256) NULL DEFAULT NULL COMMENT '' AFTER `search_index_version`,
ADD COLUMN `thumb_src_url` varchar(256) NULL DEFAULT NULL COMMENT '',
LOCK = NONE;

当我阅读mysql 5.6文档时,它不应该锁定,或者我错了吗?

版本:服务器版本:5.6.27-76.0-56-log Percona XtraDB集群(GPL),版本rel76.0,修订版2a6d4e5,WSREP版本25.13,wsrep_25.13 这里有什么指示?

预先感谢您的协助!

1 个答案:

答案 0 :(得分:0)

如果您尝试将列添加到应用程序持续使用的表中,那么您可以遇到死锁 - 这意味着您的进程正在等待其他进程完成,而另一个进程正在等待您的进程完成。通常每次选择/插入/更新都会对表格进行某种锁定。

您可以尝试关闭应用程序,进行数据库更改,然后重新打开它。

您也可以尝试暂时锁定表格。我想语法就是这样:

LOCK TABLE comm WRITE, comm READ;
ALTER TABLE `comm`
ADD COLUMN `thumb_url` varchar(256) NULL DEFAULT NULL COMMENT '' AFTER `search_index_version`,
ADD COLUMN `thumb_src_url` varchar(256) NULL DEFAULT NULL COMMENT '';
UNLOCK TABLES;