mysql错误150外键

时间:2011-02-26 00:33:02

标签: mysql sql mysql-error-1005

每当我插入表xxx:

alter table xxx 
add index FK68C3166C7B556202 (my_yyy_id), 
add constraint FK68C3166C7B556202 foreign key (my_yyy_id) references yyy (yyy_id)

......我明白了:

19:27:44,355 ERROR SchemaUpdate:212 - Unsuccessful: alter table xxx add index FK68C3166C7B556202 (my_yyy_id), add constraint FK68C3166C7B556202 foreign key (my_yyy_id) references yyy (yyy_id)
19:27:44,356 ERROR SchemaUpdate:213 - Can't create table 'mydb.#sql-2f1b_657' (errno: 150)

为什么呢?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

Documentation

  

如果MySQL从CREATE TABLE语句报告错误号1005,并且错误消息引用错误150,则表创建失败,因为未正确形成外键约束。 同样,如果ALTER TABLE失败并且引用错误150,则意味着更改的表将错误地形成外键定义。

您需要提供有关您尝试制作的外键约束的更多信息。

答案 1 :(得分:0)

如果没有细节,很难猜到出了什么问题,但是你可能会犯一些常见的错误: 1. yyy.yyy_id不是唯一/主键
2. yyy.yyy_id和xxx.my_yyy_id有不同的类型(例如yyy_id unsigned intxxx.my_yyy_id int

答案 2 :(得分:0)

您使用的是哪个版本的MySQL?可能比4.1还要大吗?

可以尝试在不添加外键的情况下创建索引吗?如果可行,请尝试添加外键。