使用trino查询MySQL数据源报错的解决方法

2024-05-29 14:31:17 浏览数 (1)

trino(版本448)启动后,当查询MySQL的源,提示连不上MySQL的库。同样的配置,查询PG数据源都可以正常使用。

解决步骤:

1、先把日志改为debug级别看下报错明细,

代码语言:txt复制
cat log.properties
# 设置日志级别,有四个级别:DEBUG, INFO, WARN and ERROR
io.trino=DEBUG

2 、再次启动trino,并执行mysql数据源的查询操作

3、查看trino的日志,发现有如下内容

代码语言:txt复制
Caused by: com.mysql.cj.exceptions.CJException: Unknown or incorrect time zone: 'Asia/Shanghai'
	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:104)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:127)
	at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:848)
	at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:771)
	at com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:701)
	at com.mysql.cj.protocol.a.NativeProtocol.configureTimeZone(NativeProtocol.java:2276)
	at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2282)
	at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1269)
	at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:848)
	... 81 more

4、github上搜下类似issue,找到解决方法

代码语言:txt复制
在 jvm.config 最后加一行:

-Duser.timezone=GMT 8

5、再次重启trino(注意验证没问题后,把log从DEBUG再改回INFO级别)

0 人点赞