Spring启动schema.sql无法使用mysqldump文件

问题描述 投票:0回答:1

每次我的集成测试开始时,Spring引导都会自动拾取并运行我的schema.sql文件。

问题是: 它给了我一个错误

无法删除或更新父行:外键约束失败。

我可以使用mysql命令导入此文件没有问题,所以我怀疑Spring启动没有使用mysql命令来运行脚本。 schema.sql由mysqldump创建。什么都没有修改。 它在我执行以下“解决方法”后工作: 1.摆脱MySQL特定的关键字/命令,如/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 2.重新排列create table块,以便以正确的顺序创建表以避免外键约束错误。

问题:如何让Spring启动导入我的schema.sql文件,就像mysql一样?如果我可以只使用mysqldump文件并将其用于测试而不是使用一些“hacky workarounds”,那将是很好的。

谢谢!

java mysql spring unit-testing
1个回答
1
投票

在.sql文件的开头添加

SET FOREIGN_KEY_CHECKS=0;

最后

SET FOREIGN_KEY_CHECKS=1;

该命令禁用外键检查并将其恢复。

转储只是插入所有表的内容行,但尚未插入相关表。

从转储中恢复的MYSQL会自动生成行。

© www.soinside.com 2019 - 2024. All rights reserved.