Flyway - 删除数据库,创建数据库

发布于 2024-11-19 13:57:28 字数 222 浏览 2 评论 0原文

我有 2 个文件:数据库结构和数据库数据 sql 文件。 (我们还没有参与创建更改文件的项目)。

如果使用 Maven 更改了其中任何一个文件,是否有办法在每次构建之前运行这些文件?

我唯一的想法是在每次更改文件后重命名文件(调出版本),以确保 Flyaway 能够拾取它。

有没有更聪明的方法,也许使用 API 或其他一些“技巧”?

谢谢

--MB

I have 2 files: db structure, and db data sql files.
(we are not in part of project where we are creating alter files yet).

Is there a way to achieve running these files before build each time if any of them changed using maven?

The only idea I have is to rename the files (bring the version up) after each change to them making sure flyaway will pick it up.

Is there a smarter way, perhaps using API or some other 'trick'?

Thanks

--MB

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏夜暖风 2024-11-26 13:57:28

您可以通过以下配置使用 Flyway migrate

validationMode=ALL
validationErrorMode=CLEAN

对于每个 sql 迁移,执行 sql 脚本时都会计算 CRC32 校验和。验证机制检查类路径中的 sql 迁移是否仍具有与数据库中已执行的 sql 迁移相同的校验和。

validationErrorMode=CLEAN 专门用于方便开发。即使很困难,我们也强烈建议在将迁移脚本签入 SCM 并运行后不要更改它们,这提供了一种顺利处理这种情况的方法。数据库将自动清除,确保下次迁移将带您回到签入 SCM 的状态。

此配置可以从 API、maven 插件命令行

You can use flyway migrate with the following configuration

validationMode=ALL
validationErrorMode=CLEAN

For each sql migration a CRC32 checksum is calculated when the sql script is executed. The validate mechanism checks if the sql migrations in the classpath still has the same checksum as the sql migration already executed in the database.

validationErrorMode=CLEAN is exclusively intended as a convenience for development. Even tough we strongly recommend not to change migration scripts once they have been checked into SCM and run, this provides a way of dealing with this case in a smooth manner. The database will be wiped clean automatically, ensuring that the next migration will bring you back to the state checked into SCM.

This configuration can be used from API, maven plugin or command line.

屌丝范 2024-11-26 13:57:28

您将使用“删除所有内容”。

flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);

使用较新的 Flyway,如果文件的校验和发生更改或版本表丢失,

With newer Flyway, you would use

flyway.setInitOnMigrate(true);
flyway.setCleanOnValidationError(true);
flyway.setValidateOnMigrate(true);

To drop everything if the checksum of the file changes or the version table is missing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文