【问题标题】:Rails 3 Migration not working on HerokuRails 3 迁移不适用于 Heroku
【发布时间】:2011-07-07 12:00:57
【问题描述】:

我有一个使用生成器创建的非常简单的迁移

class AddEmailToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :email, :string
  end

  def self.down
    remove_column :users, :email
  end
end

在本地效果很好

rake db:migrate
rails console
>> User.column_names
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role", "email"]

我在 Heroku 上有两个版本的应用程序。一方面,它工作正常。另一方面,该列根本不显示。

heroku rake db:migrate 的输出看起来正确:

==  AddEmailToUsers: migrating ================================================
-- add_column(:users, :email, :string)
   -> 0.0031s
==  AddEmailToUsers: migrated (0.0032s) =======================================

但该列不存在:

>> User.column_names
=> ["id", "created_at", "updated_at", "uid", "provider", "name", "role"]

(顺便说一句,我所有的数据库更改都是通过生成器创建的迁移;我自己没有接触过 SQL,也没有编辑任何迁移文件。)

这是一个生产环境,因此不能删除表。

对我可以尝试的事情有什么建议吗?

【问题讨论】:

  • 您是否重新启动了控制台?此外,以防万一,请检查您在 heroku 上的数据库以获取更新的表。
  • “重启控制台”是指再次运行heroku控制台吗?如果是这样,那么是的,我做到了。
  • 如何检查 Heroku 上的数据库?我可以直接在 Heroku 中运行 SQL 命令吗?
  • 不是这样,但您可以 heroku db:pull --tables users 看看其中发生了什么,然后如果可能的话,可能会在本地运行迁移后将表推回去。
  • 感谢 cmets。不知何故,它刚刚开始工作。让它工作的事情是在没有任何迁移的情况下对 Heroku 进行 git push。不知道为什么。似乎 Heroku 中可能存在错误。

标签: ruby-on-rails ruby-on-rails-3 heroku


【解决方案1】:

heroku 重启

为我解决了这个问题。

我认为这是 heroku 系统中的一个错误。我刚刚给他们发了电子邮件,要求修复。

【讨论】:

    【解决方案2】:

    您是否运行过“heroku rake db:migrate”?这不是在本地运行迁移,而是在 Heroku 上运行。

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 2012-08-11
      • 2013-01-04
      • 2011-06-07
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      相关资源
      最近更新 更多