mariaDB 外键中的奇怪错误

Odd Error in mariaDB Foreign Keys

嗨,我希望有人能帮助我解决问题,因为当我尝试添加外键约束时出现此错误。

我的数据库名称是"hazard"

Child:

CREATE TABLE `child` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `a` INT(11) NULL DEFAULT NULL,
    `b` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'

Parent:

CREATE TABLE `parent` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `alfa` INT(11) NULL DEFAULT NULL,
    `beta` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'

这些是创建代码(使用 HeidiSQL)

当我尝试添加外键时 与

ALTER TABLE CHILD MODIFY COLUMN A INT,add constraint fk_parent_child FOREIGN KEY(A) REFERENCES PARENT(ALFA);

ALTER TABLE CHILD add constraint fk1 foreign key (a) references parent(alfa);

我得到同样的错误

Can't create table 'hazard.#sql-d04_53' (errno: 150)

我的许多使用 MariaDB 和 mySQL

的同学都遇到了这种情况

对给您带来的不便表示歉意,希望大家能帮助我们。

错误 150 通常意味着您以错误的顺序更新表。也就是说,您的 first INSERT 违反了您的 second INSERT 将修复的 FOREIGN KEY 约束。

在你的情况下,你正在做 ALTER 而不是 INSERT。交换 ALTER 的顺序。如果这不起作用,请检查数据以确定您不会违反 FK 约束。如果你通过了,请继续阅读...

在极端情况下,您可以在执行插入时关闭外键约束,然后再打开它们。 (但这会让你容易出错。)

添加

KEY (`alfa`)

到parenttable。 "The referenced columns must be a PRIMARY KEY or a UNIQUE index." – https://mariadb.com/kb/en/mariadb/foreign-keys/

http://sqlfiddle.com/#!9/b4c12