有没有类似Rails Migrations这样易于安装/使用的(在Unix上)数据库迁移工具?我真的很喜欢这个想法,但是仅为了管理我的数据库迁移而安装ruby/rails似乎过于繁琐。
有没有类似Rails Migrations这样易于安装/使用的(在Unix上)数据库迁移工具?我真的很喜欢这个想法,但是仅为了管理我的数据库迁移而安装ruby/rails似乎过于繁琐。
只需使用ActiveRecord和简单的Rakefile即可。例如,如果您将迁移放在 db / migrate
目录中,并且有一个 database.yml
文件来配置数据库,那么这个简单的Rakefile应该可以工作:
Rakefile:
require 'active_record'
require 'yaml'
desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end
task :environment do
ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml')))
ActiveRecord::Base.logger = Logger.new(STDOUT)
end
database.yml:
adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost
之后,您将能够运行 rake migrate
,并且在没有周围Rails应用程序的情况下获得所有迁移好处。还有一个名为Java数据库迁移的项目。要获取代码,请查看该项目的Google Code页面。
我知道这个话题已经很老了,但是我想为未来的谷歌搜索者提供帮助。
我非常喜欢使用Python的SQLAlchemy和SQLAlchemy-Migrate来管理需要进行版本控制的数据库,如果你不想采用ActiveRecord::Migrate的方法。
这个项目旨在允许运行Active Record迁移,而无需安装Rails:
https://github.com/bretweinraub/rails-free-DB-Migrate
安装它(git 克隆它)并将其用作您项目的基础。
我个人没有亲自尝试过,但应该可以在不使用其他Rails内容的情况下使用ActiveRecord::Migration。正确设置加载路径可能是困难的部分,但实际上您只需要rake
任务和db/migrate
目录以及它们依赖的任何Rails gem,可能包括activerecord
、actviesupport
和像railties
这样的其他几个。我建议您尝试一下,看看缺少哪些类并添加它们。
在之前的公司中,我们构建了一个工具,基本上做了ActiveRecord::Migration所做的事情,只不过它是作为Maven插件用Java编写的。它所做的就是组装SQL脚本的文本块。它只需要聪明地处理按顺序进行的文件名,并知道如何更新版本控制表。