0

每当我插入表 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)

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

4

3 回答 3

0

文档

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

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

于 2011-02-26T00:36:35.583 回答
0

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

于 2011-02-26T00:40:58.907 回答
0

What version of MySQL are you using? Could it be older than 4.1 or so?

Can try create an index without adding the foreign key? If that works, try adding the foreign key.

于 2011-02-26T00:44:21.197 回答