2016-04-04 12 views
1

Postgres-Erweiterungen werden im öffentlichen Schema installiert. den Suchpfad für das App-spezifisches Schema auf der DBCP Datenquelle Legen Sie die folgende Art und Weise:Suchpfad mit Postgres funktioniert nicht mit Spring/DBCP-Datenquelle

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" primary="true"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://myhost:myport/${db.gos_app.database}?searchpath=mySchema,public;?ApplicationName=${app.name}"/> 
    <property name="connectionProperties" value="currentSchema=mySchema;"/> 
    <property name="username" value="user"/> 
    <property name="password" value="pw"/> 
    <property name="defaultAutoCommit" value="false"/> 
    <property name="maxActive" value="6" /> 
</bean> 

Aber irgendwie kann ich nicht Erweiterungen in diesem öffentlich-Schema installiert verwenden, ohne sie wie „public.hstore“ zu qualifizieren.

Antwort

0

Die Lösung gefunden - JDBC-Treiber kennen die Eigenschaft searchpath in der URL nicht. Aber dies wurde berichtet, nirgends :-( Statt Current zu Fahrer gegeben wird, die dann auf native Postgres searchpath abgebildet wird (also wahrscheinlich die eine Standard überschrieben wird dort mit öffentlichen enthalten). Nicht intuitiv!

So ist die Lösung aussieht dies wie:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" primary="true"> 
<property name="driverClassName" value="org.postgresql.Driver"/> 
<property name="url" value="jdbc:postgresql://myhost:myport/${db.gos_app.database}?ApplicationName=${app.name}"/> 
<property name="connectionProperties" value="currentSchema=mySchema,public;"/> 
<property name="username" value="user"/> 
<property name="password" value="pw"/> 
<property name="defaultAutoCommit" value="false"/> 
<property name="maxActive" value="6" /> 

+0

Warum ändern Sie nicht nur den Suchpfad für den Datenbankbenutzer 'ändern Benutzer eingestellt search_path = ...' –

+0

Weil wir einen gemeinsamen Benutzer über mehrere Dienste haben?. .. – Strinder