mySQL 5.5.17 / Workbench 5.2同步失败(错误号:150)

时间:2012-02-06 13:07:32

标签: mysql database-schema mysql-workbench

我正在尝试将某些模型更新与mySQL上的现有数据库同步。它之前运作良好,但现在我收到一个错误说:

#1005 - Can't create table 'edu_dev.#sql-132f_eef09' (errno: 150)

我真的不知道怎么回事。我正在尝试运行的更新生成如下:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

ALTER TABLE `edu_dev`.`user` 
  ADD CONSTRAINT `fk_user_language1`
  FOREIGN KEY (`language` )
  REFERENCES `edu_dev`.`language` (`iso` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

..
..
..

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

edu_dev。语言已存在于用于外键检查的列中。我还有50个其他表也应该更新,所以我不想手动完成。

1 个答案:

答案 0 :(得分:0)

问题解决了。

确保具有外键约束的所有表具有相同的排序规则。出于某种原因,有些人已经切换到latin1_swedish_ci,而他们必须是utf8_general_ci

还有一个很好的工具可以更改数据库的所有表的排序规则: Phoca Changing Collation