1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker内で特定のマイグレーションファイルのみ先にマイグレーションする方法

Last updated at Posted at 2020-04-18

この記事の続きです。
https://qiita.com/shota0701nemoto/items/06a88f9cd65a716098fe

##したいこと
Docker内でマイグレーションする際マイグレーションファイルにエラーがあったため、特定のマイグレーションファイルのみ先にマイグレーションしたい。

#####現状
Docker内で作成したデータベースでマイグレーションファイルの順番に間違いがあり、マイグレーションができない状態です。

#####原因・理由

・migration時に外部キー元のテーブルがないため。

※既存のrailsアプリにDockerを導入しようとしているため、一度にマイグレーションをせざるをえない状況になっています。

##行ったこと、調べたこと

ターミナルでdocker-compose run web bin/rake db:migrateを実行したところ次のエラーが表示される。

PG::UndefinedTable: ERROR:  relation "gyms" does not exist

下記記事の通り、先に実行するべきマイグレーションIDを指定してマイグレーションを実行する必要がある。
https://qiita.com/hrnEaSwzbOLaWj6/items/a23db1e630bafb18fe27

PG::UndefinedTable: ERROR:  relation "gyms" does not exist

##解決方法

Docker内でマイグレーションされてるファイル、されてないファイルを確認。

$  docker-compose run web bin/rake db:migrate:status  

Docker内で先にマイグレーションしたいファイルを指定して、マイグレーションする。

docker-compose run web bin/rake db:migrate:up VERSION=マイグレーションID

または

docker-compose run web rake db:migrate:up VERSION=マイグレーションID

Docker内なのでコマンドの先頭にdocker-compose run webをつける必要があります。

また、特定の環境内でmigrateなどをしたい際には、

#test環境でマイグレーションファイルの状況を確認
docker-compose run web bin/rake db:migrate:status RAILS_ENV=test
#test環境でマイグレーションファイルを指定して確認。
docker-compose run web bin/rake db:migrate:up VERSION=20200316144757 RAILS_ENV=test
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?