多対多の中間テーブルが作れない
いつも通り開発していた夕方.なんどやってもエラーが取れない.
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]
が共存するのはあまり良くないのかな?
その辺り,まだまだ勉強不足ですが,この記事が誰かの助けになれば幸いです.