我想将外键添加到名为“ 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