我在OpenShift上使用JBoss AS7和Postgres DB在非扩展应用程序中部署了一个WAR,它运行正常。 我在一个缩放的应用程序中部署了相同的WAR(否则设置相同),并且每当它尝试与数据库通信时它都会失败。 错误是:org.postgresql.util.PSQLException:致命:数据库“/”不存在
我有一个与HAProxy配置类似的问题,因为haproxy.cfg假定域根上下文(即“/”),但实际上下文包含WAR文件名(即“/ warname /”) 。更新haproxy.cfg以修复上下文解决了这个问题,我猜测有一个类似的配置解决方案可以连接到数据库,因为应用程序已缩放,所以这是一个单独的设备。
有人能引导我朝着正确的方向前进吗?
由于
答案 0 :(得分:1)
如果您正在运行缩放的应用程序,PostgreSQL在其上运行的端口是非标准端口,请确保您使用所有环境变量连接到您的数据库,它应该没问题。 SSH进入你的装备并运行env | grep POSTGRES
,你应该看到你应该使用的所有环境变量。另请注意,您的主机现在是FQDN而不是本地地址。
答案 1 :(得分:1)
事实证明,OPENSHIFT_POSTGRESQ_DB_URL环境变量可能包含也可能不包含尾随的“/”(对于非缩放应用,它不适用于缩放应用),因此附加“/ dbname”适用于非缩放应用程序,但缩放应用程序的“/”加倍,这显然是错误的。通过编写更安全的代码来检查是否存在尾随“/”,问题就解决了。