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

有帮助吗?

解决方案

只需使用 ActiveRecord 和一个简单的 Rakefile。例如,如果您将迁移放入 db/migrate 目录并有一个 database.yml 包含数据库配置的文件,这个简单的 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 之前我曾经使用过它们。它们有点复杂,我不提供支持,但如果您有兴趣,请随时与我联系。

其他提示

还有一个项目叫 Java 数据库迁移. 。要获取代码,请查看 该项目的 Google 代码页.

我发现这个话题确实很老了,但我会为未来的谷歌用户提供帮助。

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

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

在之前的一家公司,我们构建了一个工具,其功能基本上与 ActiveRecord::Migration 的功能相同,只不过它是用 Java 编写的 Maven 插件。它所做的只是组装 SQL 脚本的文本 blob。它只需要了解文件名的顺序并知道如何更新版本控制表。

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top