新增外键时报错:
错误代码:1215无法添加外键约束
<强>表key_list: 强>
CREATE TABLE <代码> key_list 代码> (
<代码> server_app_id 代码> INT(11)不是NULL,
<代码> server_name> 代码CHAR(13)不是NULL,
主键(<代码> server_app_id> 代码)
)引擎=INNODB默认字符集=utf8
<强>表for_list: 强>
CREATE TABLE <代码> for_list 代码> (
<代码> for_id 代码> INT(11)不是NULL,
<代码> for_name 代码> CHAR(13)不是NULL,
主键(<代码> for_id> 代码)
)引擎=INNODB默认字符集=utf8
在表key_list中新增外键server_app_id_ibfk:
ALTER TABLE <代码> key_list <代码> 代码>添加约束server_app_id_ibfk> 代码外键(<代码> server_app_id> 代码)引用<代码> for_list 代码>(<代码> for_id> 代码),
执行正常
在表key_list中新增外键server_name_id_ibfk:
ALTER TABLE <代码> key_list <代码> 代码>添加约束server_name_id_ibfk> 代码外键(<代码> server_name> 代码)引用<代码> for_list 代码>(<代码> for_name> 代码),
执行报错。错误代码:1215无法添加外键约束
原因:
在新增外键时,关联表(for_list)中的相关字段(for_name)必须为指数
解决:
for_list表for_name字段新增索引
ALTER TABLE for_list添加索引for_index_name (for_name);
再次执行新增外键操作:
ALTER TABLE <代码> key_list <代码> 代码>添加约束server_name_id_ibfk> 代码外键(<代码> server_name> 代码)引用<代码> for_list 代码>(<代码> for_name> 代码),
发现操作成功:
错误代码:1215不能添加外键约束