无法访问本地postgreSQL heroku,node.js

使用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文档 ,您提供给pg:pull的第二个参数是将在本地创build的包含应用程序数据副本的数据库的名称。 如果您使用了heroku网站上提供的示例:

  heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi 

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

根据注释,您的应用程序正在使用环境variablesDATABASE_URL的内容作为连接string。

既然你说pg:pull工作,但你的应用程序找不到应该存在于数据库中的表,我猜你的应用程序正在连接到错误的数据库。 如果你一味追踪heroku文档,你可能会这样做:

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

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

要确定正确的数据库名称是什么,可以通过查看命令历史logging来查找pg:pull使用的名称,或者使用psql\l命令列出所有可用的数据库。 然后更新环境variables

 export DATABASE_URL=postgres:///dbname 

其中dbname将是实际的名称。

在postgresql连接string中可以使用很多其他可能的参数(事实上可以使用多种不同的格式)。 有关这些的更多信息,请参阅postgresql手册 。