:)抱歉我的英文:(
我不是RoR的用户,但我看到了我的朋友如何编程:)。他生成了跟踪数据库变化的特殊文件。之后,他运行rake db:migrate和特殊实用程序将更改应用于数据库。
我研究Java EE并且我想拥有相同的功能,因为我需要在不同的计算机上(在家里,在我的女孩家里,在笔记本电脑上等)开发我的应用程序,所以我想拥有相同的文件(在VCS目录中使用db更改)并将它们应用于不同的计算机上。
我知道,liquibase具有该功能,但我不想手动为liquibase编写XML文件:(。对于DB设计,我想使用NetBeans或MySQL Workbench(或类似工具)。
如果重要,我使用Java EE 6,Netbeans 7.3,MySQL,Windows,MySQL Workbench。 解决问题的最佳方法是什么? :)
答案 0 :(得分:3)
看看FlyWay。它是一个简单的数据库迁移工具/库。您可以在纯SQL中编写迁移。与liquibase相比,它更简单(普通的SQL与XML)虽然灵活性稍差(你与特定的SQL方言联系在一起)。 http://flywaydb.org/
至于生成模式差异 - (您对其他答案的评论)我使用Liquibase的diff命令。它会打印出两个模式之间的差异,但是,它不会打印出从一个模式迁移到另一个模式所需的实际SQL。 SQL可以使用Liquibase生成,但它是两个步骤(当我第一次尝试使用Liquibase时,我感到困惑)。您需要首先生成changelog xml(使用diffChangeLog命令),然后将changelog xml转换为实际的SQL命令(使用updateSQL命令)。
在我需要db迁移的项目中,我使用FlyWay进行实际迁移,hibernate在开发过程中从实体类生成模式,如果在开发阶段对模式进行了很多更改,我使用liquibase生成我应用于FlyWay迁移脚本的模式差异。
答案 1 :(得分:1)
你可以使用MyBatis Schema Migrations,它既简单又强大。
答案 2 :(得分:0)
有点迟了但是如果这对某人有用:数据库迁移通常是一个强大的概念(几乎)毫不费力地将dev DB更改应用于多个目标,例如登台和生产。但是,对于您描述的方案,我考虑使用mysqldump -ujohn.smith -pv3ryS3curE dbname > relative/or/absolute/path/to/dump.sql
。导入是mysql -ujohn.smith -pv3ryS3curE dbname < dump.sql
的问题。这可以通过SSH在POSIX兼容平台上使用管道|
来完成。如果您编写脚本来执行此操作,则可以设置单个命令将最新转储丢弃到Dropbox中,以及从同一个Dropbox更新的第二个脚本或用于在计算机之间传输文件的其他任何其他脚本。或者在云端运行数据库服务器,并为所有计算机提供相同的数据库(具有持续的互联网连接)。
答案 3 :(得分:0)
liquibase是Java的开源数据库迁移工具。您提到不想编写xml,Liquibase支持yml。