我想将外键添加到名为“ katalog”的表中。
ALTER TABLE katalog ADD CONSTRAINT fk_katalog_sprache
FOREIGN KEY (Sprache
) REFERENCES Sprache
(ID
) ON DELETE SET NULL ON UPDATE SET NULL; 当我尝试执行此操作时,出现以下错误消息:
Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150) INNODB状态错误:
120405 14:02:57表mytable的外键约束错误。#sql-7fb1_7d3a:
FOREIGN KEY (Sprache
) REFERENCES Sprache
(ID
) ON DELETE SET NULL ON UPDATE SET NULL: Cannot resolve table name close to: (ID
) ON DELETE SET NULL ON UPDATE SET NULL 当我使用此查询时,它可以工作,但是执行“删除时”操作错误:
ALTER TABLE katalog
ADD FOREIGN KEY (Sprache
) REFERENCES sprache
(ID
) 两个表都是InnoDB,两个字段都是“ INT(11)not null”。我正在使用MySQL 5.1.61。尝试在MacBook Pro上使用MySQL Workbench(最新)触发此ALTER Query。
表创建语句:
CREATE TABLE katalog
( ID
int(11) unsigned NOT NULL AUTO_INCREMENT, Name
varchar(50) COLLATE utf8_unicode_ci NOT NULL, AnzahlSeiten
int(4) unsigned NOT NULL, Sprache
int(11) NOT NULL, PRIMARY KEY (ID
), UNIQUE KEY katalogname_uq
(Name
) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC$$
CREATE TABLE sprache
( ID
int(11) NOT NULL AUTO_INCREMENT, Bezeichnung
varchar(45) NOT NULL, PRIMARY KEY (ID
), UNIQUE KEY Bezeichnung_UNIQUE
(Bezeichnung
), KEY ix_sprache_id
(ID
) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
要将外键(grade_id)添加到现有表(用户),请按照下列步骤操作:
ALTER TABLE users ADD grade_id SMALLINT UNSIGNED NOT NULL DEFAULT 0; ALTER TABLE users ADD CONSTRAINT fk_grade_id FOREIGN KEY (grade_id) REFERENCES grades(id); 来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。