Heroku rake db:migrate不会创建表(Rails 5)

问题描述 投票:0回答:1

我有一个Rails 5应用,我想销毁并重建我的实时数据库(该网站尚未启动)。因此,我遵循了应该执行的步骤(过去曾经使用过):

  1. heroku pg:重置HEROKU_POSTGRESQL_HEROKUCOLOR_URL-确认{APP_NAME}
  2. heroku运行rake db:migrate
  3. heroku运行rake db:seed

第1步和第2步成功完成,第3步因错误而失败('adminsettings'是我的表之一:]

Running rake db:seed on {app_name}... starting, run.7198 (Hobby)
Running rake db:seed on {app_name}... connecting, run.7198 (Hobby)
Running rake db:seed on {app_name}... up, run.7198 (Hobby)
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "adminsettings" does not exist
LINE 8:                WHERE a.attrelid = '"adminsettings"'::regclas...

如果我运行heroku pg:info,它将返回我有2个表(我应该有大约10个表),因此好像步骤2失败了(即使没有错误)。如果我检查pgAdmin4,则只能看到2个表:ar_internal_metadata和schema_migrations,它们不是我的自定义表。

在确保所有迁移都在我的schema.rb文件中之后,我删除了所有迁移,因此实际上没有必要进行迁移-仅创建表。所以我的第一个问题是:“(应该!)'heroku rake db:migrate'是否仅使用schema.rb文件来构建表?

这是一个Rails 5.2.2应用程序,但它最初是从Rails 4.x应用程序开始的,我一路升级了所有的gem。这会是某种原因吗?到目前为止,除了我尝试进行此破坏性重建时,没有其他问题。否则,我就没主意了。而且我对发生的问题没有太多的调试可见性。

heroku ruby-on-rails-5 rake psql
1个回答
0
投票

rake db:migrate将不会加载schema.rb文件。它只会运行迁移。如果要加载架构,则可以使用rake db:schema:load

如果您恢复迁移以再次运行,则可能要小心,因为schema_migrations表可能记录了所有已运行的迁移。您还需要清除该表(删除记录-不要删除表),以指示您的迁移应再次运行。

© www.soinside.com 2019 - 2024. All rights reserved.