ruby-on-rails - Postgres db 无法在 Heroku 上运行
问题描述
我花了几个小时弄清楚如何启动和运行我的数据库。我创建了一个新的 rails 应用程序并想将其部署到 heroku。我按照 heroku 的说明(从 sqlite3 -> postgresql 切换),但它不起作用。
这是在我的 database.yml 文件中:
default: &default
adapter: postgresql
pool: 5
timeout: 5000
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
url: <%= ENV['DATABASE_URL'] %>
我无法在数据库中创建或播种任何数据。有时它会执行 db:migrate,但即便如此它也不会创建任何东西。这是我运行时得到的:
heroku run rake db:create
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
有谁知道如何解决这个问题?我已经没有头绪了...
谢谢!
解决方案
您不能使用 db:create 在 Heroku 上创建数据库(也不能删除它)。您的数据库是在您添加附加组件(例如 Heroku Postgres)时创建的。您只能迁移和播种。如果你想重新开始,你可以使用 pg:reset (而不是 drop 和 create)
所以正确的顺序应该是:
- 添加 Heroku 附加组件(例如 Heroku Postgres)。附加组件位于:https ://elements.heroku.com/addons 。
- 耙分贝:迁移
- 耙分贝:种子
如果你想重新开始
- 耙 pg:reset
- 耙分贝:迁移
- 耙分贝:种子
来自 Heroku 文档:https ://devcenter.heroku.com/articles/heroku-postgresql
分配给您的数据库的 PostgreSQL 用户没有创建或删除数据库的权限。要删除并重新创建数据库,请使用 pg:reset。
推荐阅读
- three.js - ThreeJS 调整相机旋转
- python - 如何检测多个python源文件之间的代码重复?
- c++ - 在存在 DEBUG_NEW 宏的情况下重载 operator new
- java - 缩放:如何将绘图调整到中心
- android - Android 定期作业计划程序在 10-12 小时左右后停止运行
- python - 无法在 Bokeh 中使用 HoverTool 显示来自 NetworkX 的标签
- node.js - 如何在node.js中使用google dialogflow的OriginalDetectIntentRequest api获取呼叫者的呼叫者ID
- memory-management - 如何为 Snakemake 工作预留空间?
- sql - CROSS APPLY 应用于不相关的 JOIN 表
- javascript - 从数组中提供的属性中解构对象属性