javascript - 无法访问本地 postgreSQL heroku、node.js

标签 javascript ruby-on-rails node.js postgresql heroku

使用 postgreSQL 数据库设置一个 node.js 应用程序,所有这些都可以在生产环境中运行。

我已经成功地使用了 CLI heroku pg:pull ...。我在本地运行 postgres 9.4.X,但是在本地启动我的应用程序时(工头启动)我收到一个错误:“错误错误:关系“test_table”不存在”。我已按照此处的说明进行操作:https://devcenter.heroku.com/articles/heroku-postgresql#local-setup但是在本地运行时我似乎仍然无法访问我的数据库。

bash_profile:

export PATH="/usr/local/heroku/bin:$PATH"
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
export PATH="/Applications/Postgres93.app/Contents/MacOS/bin:$PATH:$PATH"

控制台错误日志:

15:39:48 web.1 | started with pid 18779
15:39:48 web.1 | Node app is running on port 5000
15:39:52 web.1 | { [error: relation "test_table" does not exist]
15:39:52 web.1 | name: 'error',
15:39:52 web.1 | length: 101,
15:39:52 web.1 | severity: 'ERROR',
15:39:52 web.1 | code: '42P01',
15:39:52 web.1 | detail: undefined,
15:39:52 web.1 | hint: undefined,
15:39:52 web.1 | position: '15',
15:39:52 web.1 | internalPosition: undefined,
15:39:52 web.1 | internalQuery: undefined,
15:39:52 web.1 | where: undefined,
15:39:52 web.1 | schema: undefined,
15:39:52 web.1 | table: undefined,
15:39:52 web.1 | column: undefined,
15:39:52 web.1 | dataType: undefined,
15:39:52 web.1 | constraint: undefined,
15:39:52 web.1 | file: 'parse_relation.c',
15:39:52 web.1 | line: '986',
15:39:52 web.1 | routine: 'parserOpenTable' }

最佳答案

根据heroku docs您给 pg:pull 的第二个参数是将在本地创建的数据库的名称,以包含应用程序数据的副本。如果您使用 heroku 网站上给出的示例:

 heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

然后数据将被转储到名为“mylocaldb”的本地数据库中。

根据评论,您的应用程序正在使用环境变量 DATABASE_URL 的内容作为连接字符串。

既然你说 pg:pull 有效,但你的应用程序找不到数据库中应该存在的表,我猜你的应用程序连接到错误的数据库。如果您盲目地遵循 heroku 文档,您可能会这样做:

export DATABASE_URL=postgres:///$(whoami)

该连接字符串会将您连接到与您的用户名同名的数据库。这可能不是您在 pg:pull 命令中使用的名称。

要确定正确的数据库名称是什么,请回顾您的命令历史以找到 pg:pull 中使用的名称,或者使用 \l 命令psql 列出所有可用的数据库。然后更新环境变量为

export DATABASE_URL=postgres:///dbname

其中 dbname 是实际名称。

还有很多其他可能的参数可以用在 postgresql 连接字符串中(事实上,您可以使用多种不同的格式)。有关这些的更多信息,请参阅 the postgresql manual .

关于javascript - 无法访问本地 postgreSQL heroku、node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755475/

相关文章:

node.js - Node : Serving dynamic files

node.js - pm2 部署 [node.js] - stash 凭证和敏感数据

node.js - 带有 node.js restify 和 backbone.js 的身份验证系统

javascript - 使用 jquery 忽略 html 标签中的数字

javascript - Angular 2 : Update FormControl validator after valueChanges

javascript - Cloud9 中的 Mocha 测试出现 "undeclared variable"警告

ruby-on-rails - 如何在 rails 中创建 postgres 触发器?

javascript - 使用 jQuery 为触摸事件选择区域

ruby-on-rails - 如何在 Rails 中提供 socket.io 客户端文件

ruby-on-rails - 生产环境 Nginx 中的 Rails 5 ActionController::InvalidAuthenticityToken