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

Migration column not created on heroku db, visible on local - Rails

这是迁移文件

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

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

heroku

上的实际 table
Comment(id: integer, name: string, email: string, body: text, post_id: integer, created_at: datetime, updated_at: datetime)

我已经尝试过 heroku restart 也许它会更新架构或其他东西,但没有。

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

尝试以下操作 - 我假设这是你最后一次迁移 -

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

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

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

您需要做的是 rollbackHeroku 上迁移,然后再 migrate 迁移。

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

所以程序如下:

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