概要
バックエンド環境を Ruby に変更することになったため、既存の MySQL から migration ファイルを作成するための手順を調べました。
環境
- ruby: 2.4.1
- Rails: 5.0.4
手順
1. 既存データベースの接続情報を登録
config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: '既存DBのユーザ名'
password: '既存DBのパスワード'
host: '既存DBのホスト名'
development:
<<: *default
database: '既存DBのスキーマ名'
2. schema.rbを作成
$ rake db:schema:dump
上記コマンドで db/schema.rb
が作成されます。
3. migration ファイルを作成
$ rails g migration create_tables
Running via Spring preloader in process 41947
invoke active_record
create db/migrate/20170717043602_create_tables.rb
4. schema.rb の内容を migration ファイルにコピー
schema.rb
内の create_table "XXXXXX" ...
となっている箇所をコピーして、 migration ファイルの def change
の中身を書き換えます。
5. migration ファイルからテーブルを作成
$ rake db:migrate
上記コマンドで migration ファイルからテーブルが作成されます。
そのまま既存のDBに向けて実行すると、テーブルを再作成するので既存のデータが消えるので注意してください。