2014-02-14 1 views
1

명령 : 터미널에 $ heroku run rake db:migrateheroku에서 DuplicateTable 오류가 발생했습니다. rake db : migrate,이 문제를 해결하려면 다음 단계는 무엇입니까? 터미널에

오류 :

PG::DuplicateTable: ERROR: relation "users" already exists 
: CREATE TABLE "users" ("id" serial primary key, "email" character varying(255) DEFAULT '' NOT NULL, "encrypted_password" character varying(255) DEFAULT '' NOT NULL, "reset_password_token" character varying(255), "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying(255), "last_sign_in_ip" character varying(255)) /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `async_exec' 

DB를 아래에서가/아래로이 개 파일이있는 폴더를 마이그레이션 :

20140503215545_devise_create_users.rb

class DeviseCreateUsers < ActiveRecord::Migration 
    def change 
    create_table(:users) do |t| 
     ## Database authenticatable 
     t.string :email,    :null => false, :default => "" 
     t.string :encrypted_password, :null => false, :default => "" 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     t.integer :sign_in_count, :default => 0 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 

     t.timestamps 
    end 
    add_index :users, :email,    :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    end 
end 

20140503215546_add_devise_to_users.rb

class AddDeviseToUsers < ActiveRecord::Migration 
    def self.up 
    create_table(:users) do |t| 
     ## Database authenticatable 
     t.string :email,    :null => false, :default => "" 
     t.string :encrypted_password, :null => false, :default => "" 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     t.integer :sign_in_count, :default => 0 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 

     # Uncomment below if timestamps were not included in your original model. 
     # t.timestamps 
    end 

    add_index :users, :email,    :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    # add_index :users, :confirmation_token, :unique => true 
    # add_index :users, :unlock_token,   :unique => true 
    # add_index :users, :authentication_token, :unique => true 
    end 

    def self.down 
    # By default, we don't want to make any assumption about how to roll back a migration when your 
    # model already existed. Please edit below which fields you would like to remove in this migration. 
    raise ActiveRecord::IrreversibleMigration 
    end 
end 

나는 아주 새로운 레일입니다. 이 마이그레이션을 성공적으로 실행하는 방법을 제안 해주십시오.

답변

3

둘 다 효과적으로 중복됩니다. 두 번째 이전은 이전 마이그레이션 API (self.upself.down 사용)이고 첫 번째 이전은 최신 마이그레이션 API (단지 change 인스턴스 메소드)를 사용하고 있습니다.

두 번째 마이그레이션을 삭제하고 로컬로 마이그레이션 한 다음 heroku로 이동하여 다시 시도하십시오.

+1

두 번째 마이그레이션을 삭제하려고 시도했지만 동일한 오류가 계속 발생합니다. 그렇다면'$ heroku run rake db : schema : load'를 실행했습니다. 이제 작동 중입니다. – snowblindzz

관련 문제