错误代码:1215:无法添加外键约束
我尝试了所有的选择,比如使用
SET default_storage_engine=ENGINE
但我无法创建外键约束。我正在使用MySQL5.5。任何人都可以帮我。
create table if not exists pallets(
palletId serial,
goodsType varchar(25),
desitination varchar(25),
primary key (palletId)
);
create table if not exists storage(
id serial,
palletId integer,
primary key (id),
constraint FK _Pallet foreign key (palletId) REFERENCES pallets(palletId)
);
3条答案
按热度按时间vaj7vani1#
如果使用串行数据类型作为主键,则外键应为bigint unsigned
ehxuflar2#
外键列的数据类型必须与被引用表中被引用(通常是主键)列的数据类型匹配。
错误1215是我们试图创建违反此限制的外键约束时的预期行为。
根据mysql参考手册https://dev.mysql.com/doc/refman/5.6/en/numeric-type-overview.html
SERIAL
是的别名BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
.所以表定义
pallets
相当于:外键引用需要具有相同的数据类型
BIGINT UNSIGNED
例如pn9klfpd3#
这个问题以前在堆栈溢出中被问过,您可能想检查一下:错误代码:1215。无法添加外键约束(外键)