开发者社区> 问答> 正文

将外键添加到现有表

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

展开
收起
保持可爱mmm 2020-05-11 17:00:30 502 0
1 条回答
写回答
取消 提交回答
  • 要将外键(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

    2020-05-11 17:00:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载