Czy to możliwe? Czy mogę to określić w adresie URL połączenia? Jak to zrobić?
java
database
postgresql
jdbc
database-schema
marcosbeirigo
źródło
źródło
setSchema
metody JDCB po utworzeniu połączenia. Działa dla mnie z najnowszym sterownikiem postgres.postgresql-9.4.1209.jdbc42.jar
współpracował z9.5
bazą danych i?currentSchema=myschema
składnią.Od wersji 9.4 można użyć
currentSchema
parametru w parametrach połączenia.Na przykład:
źródło
Jeśli jest to możliwe w Twoim środowisku, możesz również ustawić domyślny schemat użytkownika na żądany schemat:
źródło
Nie wierzę, że istnieje sposób na określenie schematu w parametrach połączenia. Wygląda na to, że musisz wykonać
po nawiązaniu połączenia w celu określenia schematu.
źródło
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
Przesłałem zaktualizowaną wersję poprawki do sterownika PostgreSQL JDBC, aby umożliwić to kilka lat temu. Będziesz musiał zbudować sterownik PostreSQL JDBC ze źródła (po dodaniu łatki), aby go używać:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
http://jdbc.postgresql.org/
źródło
DataSource
-setCurrentSchema
Podczas tworzenia wystąpienia
DataSource
implementacji poszukaj metody ustawiania bieżącego / domyślnego schematu.Na przykład podczas
PGSimpleDataSource
rozmowy klasowejsetCurrentSchema
.Jeśli pozostawisz schemat nieokreślony, Postgres domyślnie używa schematu nazwanego
public
w bazie danych. Zobacz podręcznik, rozdział 5.9.2 Schemat publiczny . Cytując instrukcję kapelusza:źródło
search_path
Nie zapomnij,
SET SCHEMA 'myschema'
którego możesz użyć w osobnej instrukcjiOd wersji 9.4 i prawdopodobnie wcześniejszych wersji sterownika JDBC istnieje obsługa tej
setSchema(String schemaName)
metody.źródło
W Idź z „sql.DB” (zwróć uwagę na
search_path
podkreślenie):źródło
To już odpowiedź:
jdbc: postgresql: // localhost: 5432 / mydatabase? currentSchema = myschema
Podobnie jak w poprzednich odpowiedziach, powyższe parametry połączenia po prostu działają.
Sprawdziłem i jest OK: https://youtu.be/m0lBUHSLkNM?t=79
(Chociaż zaakceptowanej odpowiedzi udzielono 8 lat temu, została ona zredagowana rok temu.).
źródło