您的位置:首页 > 产品设计 > UI/UE

Liquibase异常 mysql数据库 Cannot add foreign key constraint

2017-08-30 10:25 411 查看
Caused by: java.sql.SQLException: Cannot add foreign key constraint

查看DATABASECHANGELOG 日志

使用h2数据库时,liquibase是能够正确创建表和外键以及索引,但是换到mysql的时候,无法成功创建外键。手动执行添加外键也无法成功

手动执行sql语句

ALTER TABLE datasync_monitor.table_monitor_strategy ADD CONSTRAINT fk_account_table FOREIGN KEY (account_monitor_strategy_id) REFERENCES datasync_monitor.account_monitor_strategy (id)


报错

错误代码: 1215

Cannot add foreign key constraint

既然liquibase能够在h2上成功创建表以及外键,但是在mysql上创建不了,而且表存在手动也不能添加外键,估计就是mysql的原因了。

Mysql添加不了外键原因有三:

(1)外键对应的字段数据类型不一致

(2)两张表的存储引擎不一致

(3)设置外键时“删除时”设置为“SET NULL”

一个个排除,发现table_monitor_strategy这张表对应account_monitor_strategy这张表的外键字段是设计成varchar类型的,而account_monitor_strategy中的id是bigint型的,所以才会出现无法创建外键的问题。

这个问题可能是mysql特有的,在h2上依然能够成功创建外键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  liquibase mysql 异常