18

是否有任何易于安装/使用(在 unix 上)的数据库迁移工具,例如 Rails Migrations?我真的很喜欢这个想法,但是纯粹为了管理我的数据库迁移而安装 ruby​​/rails 似乎有点过头了。

4

6 回答 6

23

只需使用 ActiveRecord 和一个简单的 Rakefile。例如,如果您将迁移放在一个db/migrate目录中并且有一个database.yml包含您的 db 配置的文件,那么这个简单的 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

数据库.yml

adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost

之后,您将能够在rake migrate没有周围的 rails 应用程序的情况下运行并获得所有迁移优势。

或者,我有一组 bash 脚本,它们执行与 ActiveRecord 迁移非常相似的功能,但它们仅适用于 Oracle。在切换到 Ruby 和 Rails 之前,我曾经使用过它们。它们有些复杂,我不为它们提供支持,但如果您有兴趣,请随时与我联系。

于 2008-09-19T19:41:57.757 回答
4

还有一个名为Java Database Migrations的项目。要获取代码,请查看项目的 Google 代码页面

于 2008-09-20T02:35:05.440 回答
3

我看到这个话题真的很老了,但我会为未来的谷歌人提供帮助。

如果您不想走 ActiveRecord::Migrate 路线,我真的很喜欢使用 Python 的 SQLAlchemy 和SQLAlchemy-Migrate来管理我需要进行版本控制的数据库。

于 2009-12-27T15:11:11.830 回答
1

我没有亲自做过,但应该可以使用 ActiveRecord::Migration 而不需要任何其他 Rails 东西。正确设置加载路径将是困难的部分,但实际上您需要的只是rake任务和db/migrate目录以及它们所依赖的任何 Rails gem,activerecord可能actviesupportrailties. 我会尝试一下,看看缺少哪些类并添加它们。

在之前的一家公司,我们构建了一个工具,它基本上完成了 ActiveRecord::Migration 的工作,只是它是用 Java 编写的一个 Maven 插件。它所做的只是组装 SQL 脚本的文本块。它只需要对按顺序排列的文件名很聪明,并且知道如何更新版本控制表。

于 2008-09-19T14:38:34.680 回答
1

该项目旨在允许在不安装 Rails 的情况下运行活动记录迁移:

https://github.com/bretweinraub/rails-free-DB-Migrate

安装它(git clone it)并将其用作项目的基础。

于 2011-05-04T08:55:33.913 回答
0

这是一个用 Haskell 编写的工具:

http://hackage.haskell.org/package/dbmigrations

于 2011-12-07T15:45:23.483 回答