LoginSignup
2
3

More than 5 years have passed since last update.

Rails5.1 db:migrate で Mysql2::Error: Table 'XXX' doesn't exist が出た時はMigrationのバージョンが問題かも

Last updated at Posted at 2017-05-30

多対多の中間テーブルが作れない

いつも通り開発していた夕方.なんどやってもエラーが取れない.
Table doesn't exist
テーブルはあるはずなのにないと言われる.

== 20170530075224 CreateCourseHomerooms: migrating ============================
-- create_table(:course_homerooms)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'hogehoge_v2_development.course_homerooms' doesn't exist: SHOW FULL FIELDS FROM `course_homerooms`
/Users/daisuke/Development/hogehogeServer_v2/db/migrate/20170530075224_create_course_homerooms.rb:3:in `change'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `require'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `<top (required)>'
/Users/daisuke/Development/hogehogeServer_v2/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'hogehoge_v2_development.course_homerooms' doesn't exist: SHOW FULL FIELDS FROM `course_homerooms`
/Users/daisuke/Development/hogehogeServer_v2/db/migrate/hogehoge20170530075224_create_course_homerooms.rb:3:in `change'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `require'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `<top (required)>'
/Users/daisuke/Development/hogehogeServer_v2/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Mysql2::Error: Table 'hogehoge_v2_development.course_homerooms' doesn't exist
/Users/daisuke/Development/hogehogeServer_v2/db/migrate/20170530075224_create_course_homerooms.rb:3:in `change'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `require'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `<top (required)>'
/Users/daisuke/Development/hogehogeServer_v2/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Mysql2::Error: Cannot add foreign key constraint
/Users/daisuke/Development/hogehogeServer_v2/db/migrate/20170530075224_create_course_homerooms.rb:3:in `change'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `require'
/Users/daisuke/Development/hogehogeServer_v2/bin/rails:9:in `<top (required)>'
/Users/daisuke/Development/hogehogeServer_v2/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Migrationのversionを5.1から5.0へ戻したら動いた

original_migration.rb
class CreateCourseHomerooms < ActiveRecord::Migration[5.1]
  def change
    create_table :course_homerooms do |t|
      t.references :course, foreign_key: true
      t.references :homeroom, foreign_key: true

      t.timestamps
    end
  end
end
fixed_migration.rb
class CreateCourseHomerooms < ActiveRecord::Migration[5.0]
  def change
    create_table :course_homerooms do |t|
      t.references :course, foreign_key: true
      t.references :homeroom, foreign_key: true

      t.timestamps
    end
  end
end

こんな簡単なことでよかったのか??
原因がなんだったかはよくわかってないのですが,ActiveRecord::Migrationのバージョンで[5.1][5.0]が共存するのはあまり良くないのかな?

その辺り,まだまだ勉強不足ですが,この記事が誰かの助けになれば幸いです.

2
3
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
2
3