【发布时间】:2020-01-26 02:22:14
【问题描述】:
我有一个 Rails 5 应用程序,我想销毁并重建我的实时数据库(站点尚未启动)。 所以我遵循了应该有效的步骤(他们过去曾经有效):
- heroku pg:reset HEROKU_POSTGRESQL_HEROKUCOLOR_URL --确认 {app_name}
- heroku 运行 rake db:migrate
- 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