Ist es möglich? Kann ich es auf der Verbindungs-URL angeben? Wie geht das?
java
database
postgresql
jdbc
database-schema
marcosbeirigo
quelle
quelle
setSchema
Methode zu verwenden, nachdem Sie Ihre Verbindung hergestellt haben. Funktioniert für mich mit einem aktuellen Postgres-Treiber.postgresql-9.4.1209.jdbc42.jar
mit einer9.5
Datenbank und der?currentSchema=myschema
Syntax zusammengearbeitet.Ab Version 9.4 können Sie den
currentSchema
Parameter in Ihrer Verbindungszeichenfolge verwenden.Beispielsweise:
quelle
Wenn dies in Ihrer Umgebung möglich ist, können Sie auch das Standardschema des Benutzers auf das gewünschte Schema festlegen:
quelle
Ich glaube nicht, dass es eine Möglichkeit gibt, das Schema in der Verbindungszeichenfolge anzugeben. Es scheint, dass Sie ausführen müssen
Nachdem die Verbindung hergestellt wurde, geben Sie das Schema an.
quelle
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
Ich habe eine aktualisierte Version eines Patches an den PostgreSQL JDBC-Treiber gesendet, um dies vor einigen Jahren zu ermöglichen. Sie müssen den PostreSQL-JDBC-Treiber aus dem Quellcode erstellen (nachdem Sie den Patch hinzugefügt haben), um ihn verwenden zu können:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
http://jdbc.postgresql.org/
quelle
DataSource
- -setCurrentSchema
Suchen Sie beim Instanziieren einer
DataSource
Implementierung nach einer Methode zum Festlegen des aktuellen / Standardschemas.Zum Beispiel beim
PGSimpleDataSource
KlassenaufrufsetCurrentSchema
.Wenn Sie das Schema nicht angegeben lassen, verwendet Postgres standardmäßig ein
public
in der Datenbank benanntes Schema . Siehe Handbuch, Abschnitt 5.9.2 Das öffentliche Schema . Um das Handbuch zu zitieren:quelle
search_path
Vergessen
SET SCHEMA 'myschema'
Sie nicht, welche Sie in einer separaten Erklärung verwenden könntenUnd seit 9.4 und möglicherweise früheren Versionen des JDBC-Treibers wird die
setSchema(String schemaName)
Methode unterstützt.quelle
In Go mit "sql.DB" (beachten Sie den
search_path
mit Unterstrich):quelle
Dies wurde bereits beantwortet:
jdbc: postgresql: // localhost: 5432 / mydatabase? currentSchema = myschema
Wie in den vorherigen Antworten funktioniert die obige Verbindungszeichenfolge einfach.
Ich habe es überprüft und es ist in Ordnung: https://youtu.be/m0lBUHSLkNM?t=79
(Obwohl die akzeptierte Antwort vor 8 Jahren gegeben wurde, wurde sie vor 1 Jahr bearbeitet ...)
quelle