删除时无法使用 "set default" 添加外键
Cannot add foreign key with "set default" as on delete
我正在使用 MariaDB,现在想向我的数据库添加一个外键 table。我在尝试使用 set default
作为我的删除约束时遇到问题;=。 (pages
table中的user_id
默认为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 Error in foreign key constraint of table project
.pages
:
Alter table project
.pages
with foreign key constraint failed. Parse error in ' foreign key (user_id
) references users
(id
) on delete set default' near ' on delete set default'.
当我在没有 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
不起作用,但错误消息没有给我足够的信息
好的,知道了。似乎 InnoDB 不允许 ON DELETE SET DEFAULT
SET DEFAULT: This action is recognized by the MySQL parser, but both InnoDB and NDB reject table definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses.
https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
我正在使用 MariaDB,现在想向我的数据库添加一个外键 table。我在尝试使用 set default
作为我的删除约束时遇到问题;=。 (pages
table中的user_id
默认为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 Error in foreign key constraint of table
project
.pages
: Alter tableproject
.pages
with foreign key constraint failed. Parse error in ' foreign key (user_id
) referencesusers
(id
) on delete set default' near ' on delete set default'.
当我在没有 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
不起作用,但错误消息没有给我足够的信息
好的,知道了。似乎 InnoDB 不允许 ON DELETE SET DEFAULT
SET DEFAULT: This action is recognized by the MySQL parser, but both InnoDB and NDB reject table definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses.
https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html