-
Notifications
You must be signed in to change notification settings - Fork 26
MySQL版からPostgreSQL版への移行手順
Yasuko Ohba edited this page Jul 15, 2019
·
25 revisions
MySQL版からPostgreSQL版への移行手順を説明します。大まかな手順は以下のとおりです。
mysqldump -u[ユーザー名] -p [本番DB名] --compatible=postgresql -t -c --skip-quote-names --skip-extended-insert --skip-add-locks --default-character-set=utf8 | sed "s/\'/''/g" > dump.sql
PostgreSQL版のアプリ環境を作り、最初のマイグレーション(20190712043808_initial_schema.rb)までが当たった状態にしてください。
rails db:migrate VERSION=20190712043808
- ※それより後のマイグレーションを当てた状態では、1でエクスポートしたファイルをインポートできません。
- ※このスキーマではエクスポートされたデータを受け取るために boolean カラムを integer カラムとしているため、そのままではアプリで利用できません。
psql database名 < dump.sql
- ※psqlではなくpg_restoreで取り込みたい環境向けには、一度 psqlでの取り込み・pg_dumpでのアーカイブ形式のエクスポートを経由して行ってください。
3でインポートしたデータベースで以下のSQLを実行してください。
DELETE FROM schema_migrations WHERE version NOT LIKE '2019%';
- ※新しい(2020以降の年が冠された)マイグレーションが存在しないことを想定しています。仮に次のステップに進んでから行う場合は、条件を適切に変更してください。
データベースで以下のSQLを実行してください。
DELETE FROM sessions;
rails db:migrate
- 環境変数 の説明を参考にしてください。