迁移列未在heroku数据库上创建,在本地 - Rails上可见

时间:2015-11-07 18:02:28

标签: ruby-on-rails ruby ruby-on-rails-4 heroku ruby-on-rails-3.2

这是迁移文件

class CreateComments < ActiveRecord::Migration
      def change
        create_table :comments do |t|
          t.string :name
          t.string :email
          t.text :body
          t.boolean :spam, default: false
          t.references :post, index: true, foreign_key: true
          t.references :user, index: true, foreign_key: true

          t.timestamps null: false
        end
      end
    end

由于某种原因,未在heroku上创建user_id列。

heroku上的实际表格

Comment(id: integer, name: string, email: string, body: text, post_id: integer, created_at: datetime, updated_at: datetime)

我已经尝试过heroku restart也许它会更新架构或什么都没有。

在我的本地环境中,我可以看到并可以使用user_id列。

2 个答案:

答案 0 :(得分:1)

我认为您没有创建新的迁移,而是修改了现有的迁移。

您需要做的是rollback Heroku 上的迁移,而不是migrate上的迁移。

请记住,您必须为您的仓库创建两个提交,一个提供有关修改的提交。这是因为在回滚迁移时,添加的列应该丢失,或者它将尝试删除不存在的列。

所以程序如下:

  1. 从迁移中删除修改。提交更改。
  2. heroku run rake db:rollback STEP=1或您需要多少步骤。
  3. 再次添加修改。提交更改。
  4. heroku run rake db:migrate

答案 1 :(得分:0)

请尝试以下操作 - 我想这是您上一次迁移 -

heroku run rake db:rollback回滚上次迁移

heroku run rake db:migrate再次运行该迁移