Ruby
MySQL
migration

既存のMySQL から migration ファイルを作成する手順。

概要

バックエンド環境を 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に向けて実行すると、テーブルを再作成するので既存のデータが消えるので注意してください。