每次我的集成测试开始时,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”,那将是很好的。
谢谢!
在.sql文件的开头添加
SET FOREIGN_KEY_CHECKS=0;
最后
SET FOREIGN_KEY_CHECKS=1;
该命令禁用外键检查并将其恢复。
转储只是插入所有表的内容行,但尚未插入相关表。
从转储中恢复的MYSQL会自动生成行。