Есть ли какой-либо простой в установке/использовании (в unix) инструмент миграции базы данных, такой как Rails Migrations? Мне очень нравится эта идея, но установка рубинов/рельсов исключительно для управления миграцией базы данных кажется излишней.
Rails-подобные миграции баз данных?
Ответ 1
Просто используйте ActiveRecord и простой Rakefile. Например, если вы переносите свои миграции в каталог db/migrate
и имеете файл database.yml
, у которого есть ваша конфигурация db, этот простой 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
и получить все преимущества миграции без приложения окружения.
В качестве альтернативы, у меня есть набор сценариев bash, которые выполняют очень похожую функцию для миграции ActiveRecord, но они работают только с Oracle. Раньше я использовал их, прежде чем переключиться на Ruby и Rails. Они несколько сложны, и я не поддерживаю их, но если вы заинтересованы, не стесняйтесь обращаться ко мне.
Ответ 2
Также существует проект под названием Миграция Java-баз данных. Чтобы получить код, просмотрите страницу кода Google для проекта.
Ответ 3
Я вижу, что эта тема действительно старая, но я буду использовать для будущих googlers.
Мне очень нравится использовать Python SQLAlchemy и SQLAlchemy-Migrate для управления базами данных, которые мне нужны для контроля версий, если вы не хотите перейдите по маршруту ActiveRecord:: Migrate.
Ответ 4
Я лично не сделал этого, но должен быть возможно использовать ActiveRecord:: Migration без каких-либо других вещей Rails. Правильная настройка пути загрузки была бы сложной, но на самом деле все, что вам нужно - это задачи rake
и каталог db/migrate
, а также все, от чего они зависят, от Rails, возможно, activerecord
, actviesupport
и, возможно, пара других как railties
. Я бы попробовал и просто посмотрел, какие классы отсутствуют, и добавьте их.
В предыдущей компании мы построили инструмент, который по сути делал то, что делает ActiveRecord:: Migration, за исключением того, что он был написан на Java как плагин Maven. Все, что было сделано, это собрать текстовые капли SQL-скриптов. Он просто должен быть умным в отношении имен файлов, находящихся в порядке, и знать, как обновлять таблицу версий.
Ответ 5
Этот проект предназначен для запуска активных миграций записей без установки Rails:
https://github.com/bretweinraub/rails-free-DB-Migrate
Установите его (git клонировать его) и используйте его в качестве базы для своего проекта.
Ответ 6
Вот инструмент, который можно сделать в Haskell: