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上依然能夠成功建立外鍵。