Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 我可以从JDBC连接为Postgres设置会话变量吗_Postgresql_Jdbc - Fatal编程技术网

Postgresql 我可以从JDBC连接为Postgres设置会话变量吗

Postgresql 我可以从JDBC连接为Postgres设置会话变量吗,postgresql,jdbc,Postgresql,Jdbc,出于性能原因,我正试图限制对数据库的往返。目前,我连接并向postgres发布了一系列声明,如SET TIMEZONE='America/New_York'。许多数据库允许将会话变量和类似设置作为jdbc url的一部分传递到数据库,即jdbc:postgresql://localhost:5435/test?timezone=America/New_York或者像这样将其添加到属性列表中 String url = "jdbc:postgresql://localhost/test:5435";

出于性能原因,我正试图限制对数据库的往返。目前,我连接并向postgres发布了一系列声明,如
SET TIMEZONE='America/New_York'
。许多数据库允许将会话变量和类似设置作为jdbc url的一部分传递到数据库,即
jdbc:postgresql://localhost:5435/test?timezone=America/New_York
或者像这样将其添加到属性列表中

String url = "jdbc:postgresql://localhost/test:5435";
Properties props = new Properties();
props.setProperty("user","fred");
props.setProperty("password","secret");
props.setProperty("timezone","America/New_York");
Connection conn = DriverManager.getConnection(url, props);
如果postgres支持这一点,并且考试失败,我无法找到确切的信息。

说:

连接参数

[……]

  • 选项=字符串
指定“选项”连接初始化参数

此属性的值可能包含空格或其他特殊字符,如果在连接URL中提供,则应正确编码。空格被视为分隔命令行参数,除非用反斜杠(
\
)转义<代码>\\表示文字反斜杠

所以你应该使用

props.setProperty(“选项”,“-c时区=美国/纽约”);
说:

连接参数

[……]

  • 选项=字符串
指定“选项”连接初始化参数

此属性的值可能包含空格或其他特殊字符,如果在连接URL中提供,则应正确编码。空格被视为分隔命令行参数,除非用反斜杠(
\
)转义<代码>\\表示文字反斜杠

所以你应该使用

props.setProperty(“选项”,“-c时区=美国/纽约”);

“一系列语句,如”-如果使用
分隔查询,则可以在一次往返中发送所有这些查询。虽然JDBC规范不允许通过一个
execute()
调用运行多个语句,但Postgres JDBC驱动程序确实支持这一点,例如
stmt.execute(“set timezone=”…”;set work_mem='64MB';set…;”
“一系列语句,如”-如果使用
分隔查询,则可以在一次往返中发送所有这些查询。虽然JDBC规范不允许使用一个
execute()
调用运行多个语句,但Postgres JDBC驱动程序确实支持这一点,例如
stmt.execute(“set timezone=”…”;set work_mem='64MB';set…;”
不清楚文档中的有效内容。但是当我尝试它时,我得到了
PSQLException:FATAL:server process的无效命令行参数:timezone=UTC
将选项设置为
-c timezone=America/New_-York
没有错误,但实际上没有为会话做任何事情。抱歉,我没有意识到您也需要
-c
。也许以后会覆盖该值?在PostgreSQL server上记录SQL语句并查看。从文档中不清楚哪些是有效的。但是当我尝试它时,我得到了
PSQLException:FATAL:server process的无效命令行参数:timezone=UTC
将选项设置为
-c timezone=America/New_-York
没有错误,但实际上没有为会话做任何事情。抱歉,我没有意识到您也需要
-c
。也许以后会覆盖该值?在PostgreSQL server上记录SQL语句,请参阅。