我正在使用MariaDB,现在想要将一个外键添加到我的数据库表中。我在尝试使用set default
作为删除约束时遇到问题; =。 (user_id
表中pages
的默认值为1)
`alter table `pages` add constraint pages_user_id_foreign foreign key (`user_id`) references `users` (`id`) on delete set default`
然而,当我这样做时,我收到了错误
SQLSTATE[HY000]: General error: 1005 Can't create table 'project.#sql-add_38' (errno: 150)
当我查看最后一个外键错误时,我得到以下输出
160322 12:40:56表
project
的外键约束出错。pages
: 使用外键约束更改表project
。pages
失败。在删除集默认'删除集'默认'附近'的'外键(user_id
)引用users
(id
)中解析错误。
当我在没有on delete set default
的情况下这样做时,它没有任何问题
`alter table `pages` add constraint pages_user_id_foreign foreign key (`user_id`) references `users` (`id`)`
同样,如果我使用set null
作为删除条件
alter table `pages` add constraint pages_provider_id_foreign foreign key (`provider_id`) references `providers` (`id`) on delete cascade
不知何故,只有set default
不起作用,但错误信息没有给我足够的信息
答案 0 :(得分:2)
好的,明白了。似乎InnoDB不允许A
SET DEFAULT:MySQL解析器识别此操作,但InnoDB和NDB都拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。
https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html