mysql表设置外键

2.3 vet_specialties
表名 vet_specialties
列名 数据类型(精度范围) 空/非空 约束条件 其它说明
vet_id INT NOT NULL foreign key REFERENCES vets(id)
specialty_id INT NOT NULL foreign key REFERENCES specialties(id)

上面是个表的规定、然后前面还有vets和 specialties两个表、
我用的是SQLyog Enterprise的mysql向导界面、
我是在表在specialties表后面点击右键,然后找到Relationships/ForeignKeys中,然后选择相应的列,
该表中的vet_id对应vet表中的id,
specialty_id对应specialty表中的id、
然后点击确定、

情况就是,上面的那张表有两个外键,分别对应到两张不同表中的某一字段、

但是mysql报错、
Error No.1005
Can't create table'数据库名.#sql-8a8_4'(error:150)

我不知道为什么、

我是个菜鸟,希望各位能够为小弟解答、
先谢过了、
一楼,我描述错了、我是在vet_specialties 上点击的右键、
关键是我要在一张表上创建两个外键、
我设置一个外键的时候还没啥问题的,但是一设置两个外键就错了、

那你应该在表 vet_specialties 上点击右键 ,然后找到Relationships/ForeignKeys中,然后选择相应的列。

或者直接写命令

ALTER TABLE vet_specialties ADD FOREIGN KEY FK_SPECIALTY_ID(specialty_id) REFERENCES specialties (id)

ALTER TABLE vet_specialties ADD FOREIGN KEY FK_VET_ID(vet_id) REFERENCES vets (id)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-07
你这种需求是可以做到的
报那个错,是因为你2个表的列的数据类型或长度不一致;也有可能specialty_id对应specialty表中的id不是主键.