Java MySQL中的'serverTimezone'参数是否更改@@session.time_zone?
如果我使用连接URL中的Java MySQL中的'serverTimezone'参数是否更改@@session.time_zone?,java,mysql,jdbc,timezone,Java,Mysql,Jdbc,Timezone,如果我使用连接URL中的serverTimezone=UTC连接到MySQL,这会更改连接到MySQL的@@session.time\u zone变量吗?或者是通过发出设置时区…语句来更改@@session.time\u zone的唯一方法?我被引导相信serverTimezone=UTC和useLegacyDateTimeCode=false的组合会将@@session.timezone设置为UTC(或我作为serverTimezone的参数传入的任何时区),但用MySQL Connector
serverTimezone=UTC
连接到MySQL,这会更改连接到MySQL的@@session.time\u zone
变量吗?或者是通过发出设置时区…
语句来更改@@session.time\u zone
的唯一方法?我被引导相信serverTimezone=UTC
和useLegacyDateTimeCode=false
的组合会将@@session.timezone
设置为UTC(或我作为serverTimezone
的参数传入的任何时区),但用MySQL Connector/J测试这种行为似乎表明它不会 如果希望将MySQL配置为UTC:
SET @@global.time_zone = '+00:00';
因此,每次自动更新datetime和每次连接到数据库时,@@session.time_zone都将设置为@global.time_zone
可能需要重新启动和重新连接数据库
如果您只是对会话时区的修改感兴趣:
SET @@session.time_zone = '+00:00';
您需要在每次连接后执行此操作。正如我在评论中所说,我也面临着同样的问题——需要找到一种方法,在不使用SQL语句的情况下通过配置JDBC驱动程序来执行
@session.time_zone='+0:00'
如果您使用的是属性(Dropwizard,可能还有Spring),下面是解决方案:
或者只是将其附加到JDBC连接URL:?sessionTimeZone=UTC&useLegacyDatetimeCode=false
连接器上根本没有提到这一点(这可能就是为什么有如此多的答案指向“serverTimezone”和其他。在您的服务器上,
显示“%zone%”之类的变量是什么;
说明了什么?MySQL和连接器的哪个版本?这是否相关?我在这里面临着完全相同的问题。您是否通过JDBC驱动程序配置实现了相同的行为on?假设我无法控制MySQL中的全局时区(因为有许多其他系统使用相同的MySQL实例,更改全局时区可能会产生意外的后果),我对管理每个连接的会话时区感兴趣。我知道我可以使用SQL语句进行设置,但我正在尝试找出serverTimezone
URL参数是否对会话时区有任何影响,这是一个很好的信息,但它并不能真正回答问题。
sessionTimeZone: UTC
useLegacyDatetimeCode: false