2011-03-18 70 views
1

我现在得到的git以下错误:Heroku的轨道迁移问题

[email protected] /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。

是否必须更改我的database.yml是否将我的应用程序不推送到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

的Heroku忽略你的database.yml。它使用他自己的配置和postgresql – 2011-03-18 13:42:05

+0

你可以发布你的迁移创建表管理员? – 2011-03-18 13:42:43

+0

我发布了我的migratrion – 2011-03-18 15:34:20

回答

0
git commit -a -m "updated some files" 

然后混帐推Heroku的主

0

这可能是因为错误是在不同的迁移发生的事情,因为你不包括设计可恢复的列,并且您的脚本未引用列* 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上不会看到他们。