我似乎无法从我的Java程序连接到我的PostgreSQL数据库 -
我的Java代码:
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection("jdbc:postgresql:$OPENSHIFT_POSTGRESQL_DB_HOST:$OPENSHIFT_POSTGRESQL_DB_PORT", "USERNAME", "PASSWORD");
对于Openshift上的数据库盒式磁带,USERNAME和PASSWORD是正确的。
我的Java应用程序与我的数据库服务器位于同一个盒式磁带中。
当试图访问数据库时,我得到一个标准的Null Pointer异常,当查看日志时,我有:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
我认为Openshift不允许程序连接到内部数据库,但我不确定如何解决它。有什么想法吗?
我尝试将IP从环境变量更改为Openshift postgres外部IP,但我从中得到了相同的错误。
提前致谢!
答案 0 :(得分:0)
您没有阅读环境变量。 $ OPENSHIFT_POSTGRESQL_DB_HOST和$ OPENSHIFT_POSTGRESQL_DB_PORT是环境变量。如果你ssh到实例并运行“env”,你将看到所有环境变量,包括那些。但在你的
DriverManager.getConnection("...{connection string}...")
这些变量未被替换。
有关如何从环境变量中读取数据,请参阅this和this tutorial。