我一直在开发一个网站上localhost和它wors罚款。今天早上,我尝试使用命令“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 something went wrong),但在我的情况下,迁移“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运行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
.
.
.
型
2条答案
按热度按时间7gcisfzg1#
我在Devise migration on existing model找到了答案。
我所做的是在DeviseCreateUsers迁移中注解掉这一行:
字符串
wwwo4jvm2#
此问题是在
User
型号带有email
字段时引起的。解决方案是不要注解掉重要的一行,即使它是一个空字符串,它也会强制电子邮件具有值。要解决这个问题,需要手动更改电子邮件列如下(我只保留相关部分):
字符串