前提
- docker for MACで開発中
- コンテナは、web(rails)、mysql、datastore(busybox)
起きている事象
- dockerコンテナを全てstopして、再度起動
docker-compose up
すると、datastoreのデータからdbをリストアしてくれる。 - コンテナが立ち上がった状態でlocalhostでアクセスしようとすると、
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
というエラーが発生
そもそもなのですが、なぜMigration are pending
になっているのかわからずでして。。
もしかしたら以前、この質問でやったみたいに、schema.rb
からリストアしたのが問題でしょうか?
試しにrails db:migrate
をしてみると以下のようなエラーがでます。
root@xxxxxxxxxxx:/myapp# bin/rake db:migrate RAILS_ENV=development == 20160830225620 CreateUsers: migrating ====================================== -- create_table(:users) rake aborted! StandardError: An error has occurred, all later migrations canceled: Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` (`id` int(11) auto_increment PRIMARY KEY, `name` varchar(255), `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL) ENGINE=InnoDB ROW_FORMAT=DYNAMIC
これを見る限り、migrationファイルも最初から流すわけではなく、途中から実行されエラーになっているようです。(20160830225620 CreateUsers
は後半のmigrationファイルという意味です)
このような場合、どのように対応するのがよいでしょうか?
20160830225620 CreateUsers
このmigrationファイル以降で、実行しているテーブルやカラムを、一度削除した上で、rails db:migrate
を実行するしかないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/20 23:06
2017/02/20 23:14
2017/02/20 23:18
2017/02/20 23:22
2017/02/20 23:23
2017/02/20 23:29