这可能吗?我可以在连接URL上指定它吗?如何做到这一点?
brqmpdu11#
我知道这个问题已经得到了回答,但是我在试图指定用于liquibase命令行的模式时遇到了同样的问题。
更新从JDBC v9.4开始,您可以使用新的currentSchema参数指定url,如下所示:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
基于早期修补程序显示:http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512.html哪个建议的url是这样的:
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
c0vxltue2#
从9.4版开始,您可以在连接字符串中使用currentSchema参数。例如:
currentSchema
w7t8yxp53#
如果在您的环境中可能,您还可以将用户的默认模式设置为所需的模式:
ALTER USER user_name SET search_path to 'schema'
yshpjwxd4#
我不相信有一种方法可以在连接字符串中指定模式。看来你得执行
set search_path to 'schema'
以指定模式。
d5vmydt95#
DataSource
setCurrentSchema
在示例化DataSource实现时,寻找一个方法来设置当前/默认模式。例如,在PGSimpleDataSource类上调用setCurrentSchema。
PGSimpleDataSource
org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource ( ); dataSource.setServerName ( "localhost" ); dataSource.setDatabaseName ( "your_db_here_" ); dataSource.setPortNumber ( 5432 ); dataSource.setUser ( "postgres" ); dataSource.setPassword ( "your_password_here" ); dataSource.setCurrentSchema ( "your_schema_name_here_" ); // <----------
如果未指定模式,Postgres默认为数据库中名为public的模式。参见手册第5.9.2节 * 公共模式 *。引用帽子手册:在前面的小节中,我们创建了表,但没有指定任何模式名称。默认情况下,这样的表(和其他对象)会自动放入名为“public”的模式中。每个新数据库都包含这样的模式。
public
brtdzjyr6#
几年前,我向PostgreSQL JDBC驱动程序提交了一个更新版本的补丁,以启用此功能。您必须从源代码构建PostreSQL JDBC驱动程序(添加补丁后)才能使用它:http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.phphttp://jdbc.postgresql.org/
k4emjkb17#
在Go中使用“sql.DB”(注意带下划线的search_path):
search_path
postgres://user:password@host/dbname?sslmode=disable&search_path=schema
4si2a6ki8#
不要忘记SET SCHEMA 'myschema',它可以在单独的语句中使用SET SCHEMA 'value'是SET search_path TO value的别名。使用此语法只能指定一个架构。从JDBC驱动程序的9.4版本和可能更早的版本开始,就支持setSchema(String schemaName)方法。
SET SCHEMA 'myschema'
setSchema(String schemaName)
t1qtbnec9#
我试过:currentSchema,searchpath,search_path在key-value部分,没有什么对我有用。我已经找到了“选项”关键词的工作:postgresql://host:port/dbname?options=-c%20search_path%3Dschema_name
postgresql://host:port/dbname?options=-c%20search_path%3Dschema_name
9条答案
按热度按时间brqmpdu11#
我知道这个问题已经得到了回答,但是我在试图指定用于liquibase命令行的模式时遇到了同样的问题。
更新从JDBC v9.4开始,您可以使用新的currentSchema参数指定url,如下所示:
基于早期修补程序显示:
http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512.html
哪个建议的url是这样的:
c0vxltue2#
从9.4版开始,您可以在连接字符串中使用
currentSchema
参数。例如:
w7t8yxp53#
如果在您的环境中可能,您还可以将用户的默认模式设置为所需的模式:
yshpjwxd4#
我不相信有一种方法可以在连接字符串中指定模式。看来你得执行
以指定模式。
d5vmydt95#
DataSource
-setCurrentSchema
在示例化
DataSource
实现时,寻找一个方法来设置当前/默认模式。例如,在
PGSimpleDataSource
类上调用setCurrentSchema
。如果未指定模式,Postgres默认为数据库中名为
public
的模式。参见手册第5.9.2节 * 公共模式 *。引用帽子手册:在前面的小节中,我们创建了表,但没有指定任何模式名称。默认情况下,这样的表(和其他对象)会自动放入名为“public”的模式中。每个新数据库都包含这样的模式。
brtdzjyr6#
几年前,我向PostgreSQL JDBC驱动程序提交了一个更新版本的补丁,以启用此功能。您必须从源代码构建PostreSQL JDBC驱动程序(添加补丁后)才能使用它:
http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php
http://jdbc.postgresql.org/
k4emjkb17#
在Go中使用“sql.DB”(注意带下划线的
search_path
):4si2a6ki8#
不要忘记
SET SCHEMA 'myschema'
,它可以在单独的语句中使用SET SCHEMA 'value'是SET search_path TO value的别名。使用此语法只能指定一个架构。
从JDBC驱动程序的9.4版本和可能更早的版本开始,就支持
setSchema(String schemaName)
方法。t1qtbnec9#
我试过:currentSchema,searchpath,search_path在key-value部分,没有什么对我有用。我已经找到了“选项”关键词的工作:
postgresql://host:port/dbname?options=-c%20search_path%3Dschema_name