9

Railsアプリで移行を実行すると、SQLite3からエラーが発生します。

SQLite3::SQLException: duplicate column name: photo_file_name: ALTER TABLE "users" ADD "photo_file_name" varchar(255)

すでに「ユーザーに写真を追加」の移行があります。ここにあります:

class AddAttachmentPhotoToUsers < ActiveRecord::Migration
   def self.up
     change_table :users do |t|
     t.has_attached_file :photo
    end
   end

  def self.down
   drop_attached_file :users, :photo
  end
end

そして、これがユーザーの移行です。

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
    t.string :name
    t.string :title
    t.string :department
    t.text :skills
    t.boolean :available

    t.timestamps
   end
 end
end

「photo_file_name」という列名が重複していると表示されているので、少し混乱していますが、Usersテーブルに追加する必要がありますか?それは意味がありません。削除する必要はありませんか?

私のアプリについて他に詳細が必要な場合はお知らせください。

4

3 に答える 3

23

これは、移行がデータベーススキーマと同期していない場合に発生します。これは、

  • データベーススキーマを「手動で」変更しました
  • 実行中の移行ファイルを変更しました
  • schema_migrations移行はテーブルで更新されていません

データベース内のデータに依存していない場合は、rake db:resetすべての移行を最初から再実行します。それ以外の場合は、テーブルに追加して、競合する移行をすでに実行済みとして認識させる必要がありschema_migrationsます。

移行のRailsGuidesも参照してください。

于 2012-11-11T17:46:17.697 に答える
3

また、herokuデータベースにログインし、問題のある列のみを削除することで、この問題を解決しました。これは破壊的な解決策ではないと思います。

于 2016-07-21T21:03:10.320 に答える
0
  • ワークベンチから開発スキーマを削除します
  • 走るrails db:create db:migrate
于 2018-07-18T07:11:33.553 に答える