2

:) Sorry for my English :(

I'm not a user of RoR, but I saw how friend of me programs :). He generates special files, that tracks changes in his database. After, He runs rake db:migrate and special utility applies changes to a database.

I study Java EE and I want to have the same functionality, because I need to develop my applications on different computers (at home, at my girl home, on a laptop, etc), so I wanna to have same files (with db changes) in VCS directory and apply them on different machines.

I know, that liquibase has that functionality, but I don't want to write XML-files for liquibase manually :(. For DB design I wanna use NetBeans or MySQL Workbench (or similar tools).

If it matters, I use Java EE 6, Netbeans 7.3, MySQL, Windows, MySQL Workbench. What is the best way for me to solve my problem? :)

4

4 回答 4

3

看看飞路。这是一个简单的数据库迁移工具/库。你用纯 SQL 编写迁移。与 liquibase 相比,它更简单(普通 SQL 与 XML),但灵活性稍差一些(您依赖于特定的 SQL 方言)。http://flywaydb.org/

至于生成模式差异 - (您对另一个答案的评论)我使用 Liquibase 的 diff 命令。它会打印出两个模式之间的差异,但是,它不会打印出从一个模式迁移到另一个模式所需的实际 SQL。虽然可以使用 Liquibase 生成 SQL,但它是两步过程(当我第一次尝试使用 Liquibase 时让我感到困惑)。您需要首先生成 changelog xml(使用 diffChangeLog 命令),然后将 changelog xml 转换为实际的 SQL 命令(使用 updateSQL 命令)。

在我需要数据库迁移的项目中,我使用 FlyWay 进行实际迁移,休眠在开发过程中从实体类生成模式,如果在开发阶段对模式有很多更改,我使用 liquibase 生成模式差异我申请了 FlyWay 迁移脚本。

于 2013-03-31T10:11:08.320 回答
1

you could use MyBatis Schema Migrations, it's easy and powerful.

于 2013-03-31T08:47:11.407 回答
0

有点晚了,但万一这对某人有用:数据库迁移通常是一个强大的概念,可以(几乎)毫不费力地将开发数据库更改应用于多个目标,例如登台和生产。但是,对于您描述的场景,我会考虑使用mysqldump -ujohn.smith -pv3ryS3curE dbname > relative/or/absolute/path/to/dump.sql. 导入是一个问题mysql -ujohn.smith -pv3ryS3curE dbname < dump.sql。这可以使用|POSIX 兼容平台上的管道通过 SSH 完成。如果您为此编写一个脚本,您可以设置一个命令,其中一个命令将您的最新转储放到 Dropbox 中,另一个脚本从同一个 Dropbox 或您可能用于在计算机之间传输文件的任何其他内容进行更新。或者在云中运行您的数据库服务器,并为您的所有计算机提供相同的数据库(受持续互联网连接的影响)。

于 2016-07-15T16:44:37.877 回答
0

liquibase是一个开源的 java 数据库迁移工具。你提到不想写 xml,Liquibase 支持 yml。

于 2019-08-10T16:35:22.967 回答