我正在尝试将某些模型更新与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个其他表也应该更新,所以我不想手动完成。
答案 0 :(得分:0)
问题解决了。
确保具有外键约束的所有表具有相同的排序规则。出于某种原因,有些人已经切换到latin1_swedish_ci
,而他们必须是utf8_general_ci
还有一个很好的工具可以更改数据库的所有表的排序规则: Phoca Changing Collation