Heroku运行rake db:migrate导致数据库没有变化,app重启了好几次

rhj*_*hjs 16 migration rake heroku database-migration rails-migrations

我将迁移推送到生产数据库时遇到问题.

问题:

  1. 我通过添加1列来更改数据库模式.
  2. 我已将其迁移到生产数据库:

    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.0017s == AddLengthColumnToBooks:migrated(0.0019s)============================ ====

  3. 考虑到新的数据库模式现在正在生产中,我已经部署了执行某些操作的代码:length.

  4. 在生产中,我收到以下错误:

    未定义的方法`length ='for#

  5. 我做了heroku rollback并将应用程序降级到最新的可靠版本.

  6. 然后(可能有点太晚了)我发现我必须heroku restart在应用程序中加载新索引.我这样做了好几次.

  7. 我打开控制台然后检查Book.column_names,但没有length

  8. heroku run rake db:migrate接着又做heroku restart了一次,没有变化.

  9. 我已经尝试将另一列迁移到生产数据库,但根本没有得到任何消息,甚至没有得到第2页的消息.

我在这做错了什么?

更新

根据Philipe的答案,我做了一些额外的步骤:

  1. 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的回答是:
  2. 要提交的更改:(使用"git reset HEAD ..."取消暂停)

    新文件:db/migrate/20130325103953_add_length_column_to_books.rb新文件:db/migrate/20130401041910_add_duration_column_to_books.rb modified:db/schema.rb

  3. 然后我做了git commit -m "Updating the schema".

  4. 输出再次是:

     3 files changed, 168 insertions(+), 156 deletions(-)
    
    Run Code Online (Sandbox Code Playgroud)

    创建模式100644 db/migrate/20130325103953_add_length_column_to_books.rb创建模式100644 db/migrate/20130401041910_add_duration_column_to_books.rb

  5. 然后我跑了heroku run rake db:migrate.不幸的是没有迁移的迹象,只是得到:

    运行rake db:migrate连接到终端...... up,run.5428就是这样.

  6. 在生产Rails控制台中,运行Book.column_names仍然缺少长度和持续时间.

现在我更多的是出于想法.`

Joh*_*non 35

它看起来不像你正在推动改变Heroku.步骤应如下;

  1. 更改本地代码
  2. 单独运行任何迁移
  3. 将所有已更改的文件添加到Git git add .
  4. 将所有添加的文件提交给git git commit -m "Adding features"
  5. 将更改推送到Heroku git push heroku master- 假设您使用的heroku是远程名称,并且您正在master分支机构中工作
  6. 如果您运行迁移heroku run rake db:migrate以运行HEROKU上的迁移
  7. 迁移之后呢 heroku restart

这应该是让你工作所需的一切.

  • 谢谢,我错过了重启. (4认同)
  • 我有同样的问题,但是我采取了你列出的所有步骤,Heroku仍然完全忽略了迁移. (4认同)