我已经使用了liquibase 1.9.5一段时间了,并且用它来替换hibernate hbm2ddl创建表并在其中加载fixture的策略。因为它是一个maven项目,因为我使用hsqldb(使用文件create = true),我只是在目标文件夹中创建db,这样我就可以在测试应用程序时随时拥有一个新数据库。工作正常,直到我意识到:
1 我现在需要在使用mysql数据库进行集成测试时重新创建数据库
2 对于非maven项目,我肯定需要相同的解决方案。
所以基本上如何在使用liquibase而不是hbm2ddl时删除并创建数据库?
答案 0 :(得分:1)
最简单的方法是在运行sql的liquibase更新之前添加一个单独的数据库调用
DROP DATABASE X;
CREATE DATABASE X
Liquibase确实有一个dropAll命令可用于删除模式中的所有内容,但它比在mysql上删除/创建数据库慢,并且可能会遗漏一些数据库对象。