我在将迁移推送到生产数据库时遇到问题。
问题:
我通过添加1列来更改数据库架构。
我已经将其迁移到生产数据库:
MacBook-Air-Mac:app msc $ rake db:migrate RAILS_ENV =“ production”
[RailsAdmin]默认禁用RailsAdmin初始化。如果需要,请传递SKIP_RAILS_ADMIN_INITIALIZER = false。
== AddLengthColumnToBooks:迁移========================================
-add_column(:books,:length,:integer)
-> 0.0017秒
== AddLengthColumnToBooks:迁移(0.0019s)================================
考虑到新的数据库模式正在生产中,我已经部署了用:length
做一些事情的代码。
在生产中,出现以下错误:
#的未定义方法`length ='
我做了heroku rollback
并将该应用程序降级为最新的可靠版本。
然后(可能有点为时已晚),我发现必须heroku restart
应用程序才能加载新索引。我做了几次。
然后打开控制台并检查Book.column_names
,但是没有length
我做了heroku run rake db:migrate
,接着又做了heroku restart
,没有变化。
我曾尝试将另一列迁移到生产数据库,但根本没有收到任何消息,甚至没有来自p.2的消息。
我在这里做错了什么?
更新资料
根据Philipe的答案,我执行了一些其他步骤:git add db/schema.rb
,git add db/migrate/20130325103953_add_length_column_to_books.rb
和'git add db / migrate / 20130401041910_add_duration_column_to_books.rb'。 Git的答案是:
所做更改:
(使用“ git reset HEAD ...”取消登台)
新文件:db / migrate / 20130325103953_add_length_column_to_books.rb
新文件:db / migrate / 20130401041910_add_duration_column_to_books.rb
修改:db / schema.rb
然后我做了git commit -m "Updating the schema"
。
再次输出是:
3 files changed, 168 insertions(+), 156 deletions(-)
创建模式100644 db / migrate / 20130325103953_add_length_column_to_books.rb
创建模式100644 db / migrate / 20130401041910_add_duration_column_to_books.rb
然后我运行
heroku run rake db:migrate
。不幸的是,没有迁移的迹象,只是得到了:运行连接到终端的
rake db:migrate
... up,run.5428就是这样。
在生产的Rails Console中,运行
Book.column_names
仍然缺少长度和持续时间。现在我什至没有想法。
`
最佳答案
您似乎没有将更改推送到Heroku。步骤应如下;
更改本地代码
本地运行任何迁移
将所有更改的文件添加到Git git add .
将所有添加的文件提交到git git commit -m "Adding features"
将更改推送到Heroku git push heroku master
-假设您使用heroku
作为您的远程名称,并且您正在master
分支中工作
如果您有迁移,请运行heroku run rake db:migrate
在HEROKU上运行迁移
后续迁移执行heroku restart
那应该是您工作所需的全部。
关于heroku - Heroku运行rake db:migrate结果数据库没有变化,应用重新启动了几次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737800/