Apa itu mungkin? Bisakah saya menentukannya di URL koneksi? Bagaimana cara melakukannya?
java
database
postgresql
jdbc
database-schema
marcosbeirigo
sumber
sumber
setSchema
metode JDCB setelah membuat koneksi Anda. Bekerja untuk saya dengan driver postgres baru-baru ini.postgresql-9.4.1209.jdbc42.jar
bekerja sama dengan9.5
database dan?currentSchema=myschema
sintaksis.Pada versi 9.4 , Anda dapat menggunakan
currentSchema
parameter dalam string koneksi Anda.Sebagai contoh:
sumber
Jika memungkinkan di lingkungan Anda, Anda juga dapat mengatur skema default pengguna ke skema yang Anda inginkan:
sumber
Saya tidak percaya ada cara untuk menentukan skema di string koneksi. Tampaknya Anda harus menjalankan
setelah koneksi dibuat untuk menentukan skema.
sumber
Statement statement = connection.createStatement(); try { statement.execute("set search_path to '" + schema + "'"); } finally { statement.close(); }
Saya mengirimkan versi tambalan yang diperbarui ke driver JDBC PostgreSQL untuk mengaktifkannya beberapa tahun yang lalu. Anda harus membangun driver JDBC PostreSQL dari sumber (setelah menambahkan dalam tambalan) untuk menggunakannya:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
http://jdbc.postgresql.org/
sumber
DataSource
-setCurrentSchema
Saat instantiasi a
DataSource
implementasi, cari metode untuk mengatur skema saat ini / default.Misalnya, pada
PGSimpleDataSource
panggilan kelassetCurrentSchema
.Jika Anda membiarkan skema tidak ditentukan, Postgres default ke skema yang bernama
public
dalam database. Lihat manual, bagian 5.9.2 Skema Publik . Mengutip manual topi:sumber
search_path
Jangan lupa
SET SCHEMA 'myschema'
yang dapat Anda gunakan dalam Pernyataan terpisahDan sejak 9.4 dan mungkin versi sebelumnya pada driver JDBC, ada dukungan untuk
setSchema(String schemaName)
metode ini.sumber
In Go with "sql.DB" (perhatikan
search_path
dengan garis bawah):sumber
Ini sudah dijawab:
jdbc: postgresql: // localhost: 5432 / mydatabase? currentSchema = myschema
Seperti pada jawaban sebelumnya, string koneksi di atas hanya berfungsi.
Saya sudah memeriksa, dan tidak apa-apa: https://youtu.be/m0lBUHSLkNM?t=79
(Meskipun jawaban yang diterima diberikan 8 tahun yang lalu, itu diedit 1 tahun yang lalu ...)
sumber