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

Heroku rake db:migrate does not create tables (Rails 5)

我有一个 Rails 5 应用程序,我想销毁并重建我的实时数据库(网站尚未启动)。 所以我遵循了应该起作用的步骤(它们过去曾经起作用):

  1. heroku pg:reset HEROKU_POSTGRESQL_HEROKUCOLOR_URL --确认 {app_name}
  2. heroku 运行 耙子 db:migrate
  3. heroku 运行 耙子 db:seed

第 1 步和第 2 步成功完成,第 3 步失败并出现错误('adminsettings' 是我的 table 之一):

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 它 returns 我有 2 tables (我应该有大约 10 个)所以就好像第 2 步失败了(即使没有错误)。 如果我检查 pgAdmin4 我只能看到 2 tables: ar_internal_metadata 和 schema_migrations 这不是我自定义的 tables.

确保它们在我的 schema.rb 文件中后,我删除了所有迁移,因此实际上不需要迁移 - 只是 table 创建。所以我的第一个问题是: 'heroku rake db:migrate' 是否(应该!)只使用 schema.rb 文件来构建 tables?

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

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

如果您再次将迁移恢复到 运行,您可能还需要小心,因为 schema_migrations table 可能记录了您所有具有 运行 的迁移已经。您还需要清除 table(删除记录 - 而不是删除 table),以表明您的迁移应该再次 运行。