2

我一直在本地主机上开发一个网站,效果很好。今天早上,我尝试使用命令“git push heroku master”然后“heroku run rake db:migrate”将它推送到heroku。当我尝试做第二个时,我有一个错误:

Connecting to database specified by DATABASE_URL
Migrating to DeviseCreateUsers (20130427200347)
Migrating to CreateAuthentications (20130427210108)
Migrating to AddTokenToAuth (20130427233400)
Migrating to AddNotificationToAuth (20130427234836)
Migrating to AddNotifToUser (20130428031013)
Migrating to AddDeviseToUsers (20130712103048)
==  AddDeviseToUsers: migrating ===============================================
-- change_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

PGError: ERROR:  column "email" of relation "users" already exists
: ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT N
sql_adapter.rb:652:in `async_exec'

我找到了遇到同样问题的人(heroku PGError: already exists 500 We're sorry, but出了问题),但在我的情况下,迁移“AddDeviseToUsers”不在“db/migrate”文件夹中。

以前影响用户表的迁移是:

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

  ## Token authenticatable
  # t.string :authentication_token


  t.timestamps
end

add_index :users, :email,                :unique => true
add_index :users, :reset_password_token, :unique => true
end
end

class AddNotifToUser < ActiveRecord::Migration
 def change
  add_column :users, :notif, :string
 end
end

提前致谢 !!

编辑 - 我运行时回答评论:heroku run rake db:migrate:status

up     20130427200347  Devise create users
up     20130427210108  Create authentications
up     20130427233400  Add token to auth
up     20130427234836  Add notification to auth
up     20130428031013  Add notif to user
down    20130712103048  Add devise to users
down    20130719091217  Create relationships
.
.
.
4

1 回答 1

8

我在现有模型的设计迁移中找到了答案。

我所做的是在 DeviseCreateUsers 迁移中注释掉这一行:

"t.string :email,              :null => false, :default => """ 
于 2013-08-21T20:26:14.170 回答