我在Windows 7 64位下的R 2.15.2上使用RPostgreSQL 0.4库(在R 2.15.3上编译)来连接到PostgreSQL。这在连接到localhost上的PostgreSQL数据库时工作正常。我正在尝试使用Heroku上的远程PostgreSQL数据库运行我的R代码。我可以从我的机器上的psql命令shell连接到Heroku的PostgreSQL数据库,它连接没有问题。我收到了消息:
psql (9.2.3, server 9.1.9)
WARNING: psql version 9.2, server version 9.1.
Some psql features might not work.
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
显然,psql使用SSL进行连接。当我尝试使用RPostgreSQL库例程dbConnect()进行连接时,使用dname =,host =,port =,user =,password =提供完全相同的凭据时,连接失败并出现投诉:
Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect <user>@<hostname> on dbname <dbname>)
Calls: source ... .valueClassTest -> is -> is -> postgresqlNewConnection -> .Call
Execution halted
我知道如果你想远程访问他们的数据库,Heroku坚持使用SSL连接,因此R接口例程dbConnect()似乎没有尝试SSL。我还能做些什么来从Heroku上的R到PostgreSQL的远程连接工作吗?
答案 0 :(得分:3)
获取heroku实例的JDBC URL:
jdbc:postgresql://[hostname]/[database]?user=[user]&password=[password]&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
答案 1 :(得分:2)
显然有一种使用RJDBC的方法。参见:
http://ryepup.unwashedmeme.com/blog/2010/11/17/working-with-r-postgresql-ssl-and-mssql/
答案 2 :(得分:0)
请注意,为了在外部使用JDBC连接到Heroku数据库,同样重要的是设置sslfactory参数。希望Heroku团队通过它并修改他们的文档。
String dbUri = "jdbc:postgresql://ec2-54-243-202-174.compute-1.amazonaws.com:5432/**xxxxxxx**";
Properties props = new Properties();
props.setProperty("user", "**xxxxx**");
props.setProperty("password", "**xxxxx**");
props.setProperty("ssl", "true");//ssl to be set true
props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory");// sslfactory to be set as shown above
Connection c=DriverManager.getConnection(dbUri,props);
答案 3 :(得分:0)
请参阅https://stackoverflow.com/a/38942581处相关问答的答案。使用RPostgres(https://github.com/rstats-db/RPostgres)而不是RPostgreSQL的建议为我解决了同样的问题。