· 

rake db:migrateでエラーが発生(ruby)

 

rake db:migrate で未実行のマイグレーションファイルをテーブルに反映させようとした所、以下のようなエラー文が発生。

Caused by:

ActiveRecord::StatementInvalid: Mysql2::Error: Table 'example' already exists: CREATE TABLE `tweets` (`id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL)

その為、rake db:dropで一度データベースを消そうとするとまたもやエラーが発生。ただ、エラー文をよく読んでみると以下のようなメッセージが出力されていた。

Environment data not found in the schema. To resolve this issue,run: 

 

        bin/rails db:environment:set RAILS_ENV=development

 

なので、bin/rails db:environment:set RAILS_ENV=development

を実行してから再度rake db:drop を実行。するとデータDropped database と無事表示された。

その後、 rake db:migrate を実行すると

ActiveRecord::NoDatabaseError: Unknown database

とのエラーが発生(まあデータベースをドロップしたんだから当然といえば当然)

その為、本来であればここで rake db:create とすれば良かったと思うのだが、ここでなぜかrake db:resetと入力。

ただこちらでも

Database ‘example_development' does not exist

Database 'example_test' does not exist

と表示された後

Created database 'example_development'

Created database 'example_test'

と表示され、なぜかデータベースを生成してくれた。

その後、rake db:migrate を実行すると無事マイグレーションファイルを実行できた。

 

なんだかあまりスッキリとしないが、とりあえず解決できてよかった。