我现在在git中遇到以下错误:
Home@PC /c/rails/konkurranceportalen (master)
$ heroku rake db:migrate
(in /app/x/home)
== DeviseCreateAdmins: migrating =============================================
-- create_table(:admins)
-> 0.0148s
-- add_index(:admins, :email, {:unique=>true})
-> 0.0231s
-- add_index(:admins, :reset_password_token, {:unique=>true})
rake aborted!
An error has occurred, this and all later migrations canceled:
PGError: ERROR: column "reset_password_token" does not exist
: CREATE UNIQUE INDEX "index_admins_on_reset_password_token" ON "admins" ("reset
_password_token")
(See full trace by running task with --trace)
我在本地计算机上的应用程序中更改了迁移文件。但是当我使用heroku rake db:migrate时,似乎没有任何改变。我已经运行了git push heroku master。 我可以在本地计算机上迁移数据库。我目前正在使用phpmyadmin的Mysql。
我是否必须更改我的数据库。我的应用程序是不是被推送到heroku?
以下是我的一些database.yml:
production:
adapter: mysql
database: rails_p
encoding: utf8
pool: 5
username: root
password:
socket: C:/xampp/mysql/bin/mysqld.sock
host: 127.0.0.1
我的迁移:
class DeviseCreateAdmins < ActiveRecord::Migration
def self.up
create_table(:admins) do |t|
t.database_authenticatable :null => false
t.rememberable
t.timestamps
end
add_index :admins, :email, :unique => true
# add_index :admins, :confirmation_token, :unique => true
# add_index :admins, :unlock_token, :unique => true
end
def self.down
drop_table :admins
end
end
答案 0 :(得分:0)
可能是错误发生在不同的迁移上,因为您没有包含devise recoverable 列,并且您的脚本未引用列* reset_password_token *
是否要运行以下脚本?
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
end
def self.down
drop_table :users
end
end
请记住,当你使用heroku时,你会推送你的git存储库,所以如果你有未提交的更改(正如你所提到的那样),heroku将不会看到它们。
答案 1 :(得分:0)
git commit -a -m "updated some files"
然后git push heroku master