MySQL,重命名db中所有表的所有列

时间:2011-10-07 07:37:39

标签: mysql sql innodb

我在db中有大约500多个表,需要重命名所有表的所有列。 数据库引擎是InnoDB。 目前我正在执行每个表

ALTER TABLE RENAME db.table CHANGE oldID newID INT, CHANGE oldDESC newDESC VARCHAR(50);

这在某些表中失败(错误:150),因为它们具有引用其他表的外键约束。

有没有更智能的方法来避免那些可怕的错误?

1 个答案:

答案 0 :(得分:1)

您可以尝试在执行更新时禁用外键检查,然后再次启用它们

编辑:也许this可以提供帮助

START TRANSACTION;  
SET foreign_key_checks = 0; -- off

.. do stuff here    

SET foreign_key_chekcs = 1; -- on.
COMMIT;