RailsでWebアプリケーション制作の勉強中です。新たにテーブルを作り、マイグレーションスクリプトを書き換えて、
$ rails db:migrateを実行すると「すでに存在しています。」(ArgumentError:)というようなエラーが発生しました。
そこで、一度テーブルを削除して、($ rails d model bank)再度実行してみましたが、同じエラーが出ます。マイグレーションスクリプトとエラーコードは下記になります。
マイグレーションスクリプト
class CreateBanks < ActiveRecord::Migration[5.1] def change create_table :banks do |t| t.references :customer, null: false # 顧客への外部キー t.string :bk_name, null: false # 銀行名 t.string :office, null: false # 支店名 t.integer :account, null: false # 口座番号 t.string :acc_name, null: false # 口座名義 t.string :acc_name_kana, null: false # 口座名義(カナ) t.timestamps end add_index :banks, [ :customer_id ], unique: true add_foreign_key :banks, :customers end end
エラー内容
[vagrant@localhost chibi]$ rails db:migrate == 20170911031045 CreateBanks: migrating ====================================== -- create_table(:banks) rails aborted! StandardError: An error has occurred, all later migrations canceled: Index name 'index_banks_on_customer_id' on table 'banks' already exists/home/vagrant/chibi/chibi/db/migrate/20170911031045_create_banks.rb:3:in `change' bin/rails:4:in `require' bin/rails:4:in `<main>' ArgumentError: Index name 'index_banks_on_customer_id' on table 'banks' already exists /home/vagrant/chibi/chibi/db/migrate/20170911031045_create_banks.rb:3:in `change' bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)
customerの外部キー設定のあたりが悪さしているような感じですが、解決方法がわかりません。
原因がわからないのでどなたか教えていただけないでしょうか?宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/11 07:57