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

时间:2018-07-27 13:01:50

标签: mysql indexing foreign-keys

我试图在两个表之间创建外键约束,但是在执行alter命令后,mysql创建索引而不是外键。

我正在使用休眠模式,因此起初我以为这是休眠模式的问题,但是当我直接对mysql行为执行查询时,是相同的。

  

变更表人员添加约束FK9ircw28d19mdg5pu8yfg1qs8p外键(Address_Id)引用地址(Address_Id)

运行此命令后,我在mysql数据库中得到关注

enter image description here

如您所见,约束是在索引中添加的,而不是作为外键添加的。

Hibernate在创建表时执行以下查询:

  

休眠:删除表(如果存在)地址

     

Hibernate:如果存在hibernate_sequence,则删除表

     

休眠:如果存在人员,则删除表

     

休眠:创建表地址(Address_Id bigint不为null,addressLine1 varchar(255),addressLine2 varchar(255),city varchar(255)不为null,country varchar(255)不为null,state varchar(255)不为null,主键(Address_Id))engine = MyISAM

     

休眠:创建表hibernate_sequence(next_val bigint)engine = MyISAM

     

休眠:插入hibernate_sequence值(1)

     

休眠:插入hibernate_sequence值(1)

     

休眠:创建表人(Person_Id bigint不为null,dob日期不为null,名称varchar(255)不为null,Address_Id bigint,主键(Person_Id))engine = MyISAM

     

休眠:更改表人添加约束FK9ircw28d19mdg5pu8yfg1qs8p外键(Address_Id)引用地址(Address_Id)

1 个答案:

答案 0 :(得分:0)

感谢@Solarflare。它解决了我的问题。问题是MyISAM引擎不支持外键。将引擎类型更改为InnoDB后,一切按预期进行。