mysql创建索引而不是外键约束

b5buobof  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我试图在两个表之间创建一个外键约束,但在执行alter命令之后,mysql将创建索引而不是外键。
我使用的是hibernate,所以最初我认为这是hibernate的问题,但是当我直接在mysql上执行查询时,行为是一样的。
alter table person add constraint fk9ircw28d19mdg5pu8yfg1qs8p外键(address\u id)引用地址(address\u id)
在运行这个命令之后,我在mysql数据库中获得了以下信息

如您所见,约束被添加到索引中,而不是作为外键。
hibernate在创建表时执行以下查询:
休眠:删除表(如果存在)
hibernate:如果存在hibernate\u序列,则删除表
休眠:删除表(如果存在)
hibernate:创建表address(address\u id bigint not null,addressline1 varchar(255),addressline2 varchar(255),city varchar(255)not null,country varchar(255)not null,state varchar(255)not null,主键(address\u id))engine=myisam
hibernate:创建表hibernate\u sequence(next\u val bigint)engine=myisam
休眠:插入休眠序列值(1)
休眠:插入休眠序列值(1)
hibernate:创建表person(person\u id bigint not null,dob date not null,name varchar(255)not null,address\u id bigint,主键(person\u id))engine=myisam
hibernate:alter table person add constraint fk9ircw28d19mdg5pu8yfg1qs8p外键(address\u id)引用地址(address\u id)

gblwokeq

gblwokeq1#

谢谢@solarflare。它解决了我的问题。问题是myisam引擎不支持外键。一旦我把引擎类型改成了innodb,一切都如期进行。

相关问题