迁移列未在 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
到运行再次迁移
我想您没有创建新的迁移,而是修改了现有的迁移。
您需要做的是 rollback
在 Heroku 上迁移,然后再 migrate
迁移。
请记住,您将必须对您的存储库创建两个提交,一个没有修改,一个没有修改。这是因为回滚迁移时添加的列应该丢失,否则它将尝试删除不存在的列。
所以程序如下:
- 从迁移中删除修改。提交更改。
heroku run rake db:rollback STEP=1
或者您需要多少步骤。
- 再次添加修改。提交更改。
heroku run rake db:migrate
这是迁移文件
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
上的实际 tableComment(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
到运行再次迁移
我想您没有创建新的迁移,而是修改了现有的迁移。
您需要做的是 rollback
在 Heroku 上迁移,然后再 migrate
迁移。
请记住,您将必须对您的存储库创建两个提交,一个没有修改,一个没有修改。这是因为回滚迁移时添加的列应该丢失,否则它将尝试删除不存在的列。
所以程序如下:
- 从迁移中删除修改。提交更改。
heroku run rake db:rollback STEP=1
或者您需要多少步骤。- 再次添加修改。提交更改。
heroku run rake db:migrate