Re: 'FATAL: database "null" does not exist ' when accessing
От | Oliver Jowett |
---|---|
Тема | Re: 'FATAL: database "null" does not exist ' when accessing |
Дата | |
Msg-id | 43C96BF1.4000407@opencloud.com обсуждение исходный текст |
Ответ на | Re: 'FATAL: database "null" does not exist ' when accessing through a ("Joeseph Blowseph" <joseph_blowseph@hotmail.com>) |
Ответы |
Re: 'FATAL: database "null" does not exist ' when accessing through a
|
Список | pgsql-jdbc |
Joeseph Blowseph wrote: > The datasource construction parameters are stored in a data-sources xml > file like this: > > <native-data-source name="PGDS1" > data-source-class="org.postgresql.ds.PGPoolingDataSource" > jndi-name="jdbc/PGPooling" > user="postgres" password="password" > url="jdbc:postgresql://localhost:5432/PGSQL1"/> > > ... > > The program code does a jdni lookup for the DataSource. That means that > you don't have to hard-code connection details into the source. But, as > things stand, I have to hard-code the database name. Sorry, I guess I wasn't clear. Your container will be constructing a PGPoolingDataSource object, then calling various JavaBean-property-style methods on it to initialize it. These are methods such as setUser(), setPassword(), and setDatabaseName(). When PGPoolingDataSource is asked for a connection, it constructs a driver URL from the various properties it is configured with and then requests a connection with that URL. The set of properties provided by a particular DataSource implementation can vary -- the container is meant to use introspection to find and invoke the property accessors. PGPoolingDataSource does not have a "url" property, it does not provide setURL() or similar. So I don't know what the container is doing with that "url" parameter, but it's not being set on the DataSource for sure. As the URL you specify never makes it to the DataSource, it's not suprising that the information you specify there is not used. You need to persuade your container to call the JavaBean accessor setDatabaseName() on the DataSource before use. Perhaps you could try adding an attribute called databaseName to your <native-data-source> configuration element above? This is why manually calling setDatabaseName fixes the "problem" -- but it's the container's job to call it, as you say. So complain to your container's vendor.. the PG datasource is working as designed, AFAIK. -O
В списке pgsql-jdbc по дате отправления: