从JavaDB迁移到PostgreSQL并且无法再访问数据库

时间:2009-12-21 10:56:20

标签: postgresql jpa jdbc glassfish

我在Glassfish v2(Mac OS 10.5.8和Java 1.6)上有一个应用程序,它使用Glassfish捆绑包附带的JavaDB和Toplinks。一切正常。

我安装了PostgreSQL 8.4和JDBC v4驱动程序。 Glassfish和Postgres服务器都在localhost上运行。从Netbeans,我创建了一个与Postgres服务器上的数据库的连接,它工作正常,我可以手动创建和删除表。

我为Posgres服务器的这个连接创建了一个连接池,资源和持久性单元。部署时出现以下错误:

ADM1041:Sent the event to instance:
    [ResourceDeployEvent -- reference-added jdbc/jdbc/MyDatasource]
CORE5004: Resource Deployed: [jdbc:jdbc/MyDatasource].
TopLink, version: Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))
Server: unknown
RAR5038:Unexpected exception while creating resource for pool MyConnectionPool.  
Exception : Connection could not be allocated because: 
    FATAL: database "null" does not exist

我在Postgres 8.4中看到,默认情况下接受localhost请求,所以我没有更改postgres.conf中的任何内容。

我错过了什么,但我看不清楚。 提前感谢任何暗示。

2 个答案:

答案 0 :(得分:2)

首先确保MacOSX / GlassFish确实使用指定的Java版本(测试时使用: java -version )。然后尝试以下方法:

asadmin create-jdbc-connection-pool 
   --datasourceclassname org.postgresql.ds.PGSimpleDataSource 
   --restype javax.sql.DataSource --property portNumber=5432:password=secret:user=postgres:serverName=localhost:databaseName=postgres 
   test-pool

asadmin create-jdbc-resource --connectionpoolid test-pool jdbc/Postgres

请记住更改用户名密码服务器端口数据库反映您的设置。然后使用以下方法测试数据源:

asadmin ping-connection-pool test-pool

如果这不起作用,那么您错过了配置数据源。

答案 1 :(得分:0)

我不知道堆栈,但听起来你没有在连接中指定数据库名称。有关您可以/应该在连接上设置的参数列表,请参阅http://jdbc.postgresql.org/documentation/84/connect.html