Skip site navigation (1) Skip section navigation (2)

Re: 'FATAL: database "null" does not exist ' when accessing

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Joeseph Blowseph <joseph_blowseph(at)hotmail(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: 'FATAL: database "null" does not exist ' when accessing
Date: 2006-01-14 21:24:01
Message-ID: 43C96BF1.4000407@opencloud.com (view raw or flat)
Thread:
Lists: 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

In response to

Responses

pgsql-jdbc by date

Next:From: Joeseph BlowsephDate: 2006-01-14 22:05:26
Subject: Re: 'FATAL: database "null" does not exist ' when accessing through a
Previous:From: Joeseph BlowsephDate: 2006-01-14 16:59:05
Subject: Re: 'FATAL: database "null" does not exist ' when accessing through a

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group