Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ruby写入heroku上的pg数据库?(不是轨道)_Ruby_Postgresql_Heroku - Fatal编程技术网

如何从ruby写入heroku上的pg数据库?(不是轨道)

如何从ruby写入heroku上的pg数据库?(不是轨道),ruby,postgresql,heroku,Ruby,Postgresql,Heroku,我有一个非常简单的ruby文件,可以在开发环境中的本地主机上正常运行,但是我无法让它连接到Heroku上的postgresql数据库 require 'pg' conn = PG.connect(dbname: 'postgres://uullzzubseknqp:fe8af8be794708c6559d1b521aa285a9500c8645d543fdf23f83bbe7dd628462@ec2-54-235-204-221.compute-1.amazonaws.com:5432/d80u

我有一个非常简单的ruby文件,可以在开发环境中的本地主机上正常运行,但是我无法让它连接到Heroku上的postgresql数据库

require 'pg'
conn = PG.connect(dbname: 'postgres://uullzzubseknqp:fe8af8be794708c6559d1b521aa285a9500c8645d543fdf23f83bbe7dd628462@ec2-54-235-204-221.compute-1.amazonaws.com:5432/d80u9t8om01fml')
我得到这个错误:

/app/vendor/bundle/ruby/2.3.0/gems/pg-0.19.0/lib/pg.rb:45:in
initialize':无法连接到服务器:没有这样的文件或目录
(PG::ConnectionBad)服务器是否在本地运行并接受来自
/app/vendor/bundle/ruby/2.3.0/gems/pg-0.19.0/lib/pg.rb:45:in
new' Unix域套接字上的连接“/var/run/postgresql/.s.PGSQL.5432”

我不知道如何从Heroku访问数据库\u URL ENV config变量。我甚至尝试过将实际字符串剪切并粘贴到代码中以代替XXXXX,但它会抛出相同的错误

我在rails应用程序中看到了很多关于StackOverflow的建议,但是没有一个是关于如何作为一个独立的ruby worker来实现这一点的

谢谢

编辑:将实际的数据库信息添加到帖子中。我知道这是不安全的,但那里没有敏感信息,一旦我弄明白了这一点,我会立即更改它。

是一种在不使用Rails时连接数据库并向数据库发送查询的好方法

从文档:

DB = Sequel.connect('postgres://user:password@host:port/database_name') # requires pg

连接字符串由用户名、密码、主机、端口和数据库名组成,但您要将整个字符串作为“dbname”传递给PG.connect


我怀疑您会使用不同的参数名(uri?)传入该字符串,或者将其分解为第73行列出的单独组件,谢谢您的快速响应。我已经可以连接到本地主机上的数据库了。我真的不知道如何在heroku环境中具体实现。你知道你的heroku上的数据库URL是什么样子吗?是的。实际上,尝试了PG连接,其中包含剪切和粘贴的数据库URL字符串,并得到了相同的错误。我把它添加到原来的帖子里,这样你就可以看到了。我来试试看。我明白了-为什么传入参数名或组件与传入完整字符串有什么不同?只是执行相同操作的方式不同而已。您可以获取URL并将其解析为组件,或者允许单独提供这些组件。