Metabase连接mysql5.6.16-log版本数据库报错:Unknown system variable ‘session_track_schema’
情况一:Metabase启动数据库为mysql5.6.16
启动直接报错,启动失败
Metabase在启动时报错session_track_schema
,日志文件如下:
1 | while i'm executing |
情况二:添加数据源mysql5.6.16
如果数据源是这个版本也会同样的问题:
这个问题是数据库版本导致的,你看一下详细查看Metabase github的issue:9483的讨论
关于这个问题Metabase上的issue特别的多,而且容易看晕,最后终于在找到了一个解决办法,亲测可用
最终解决方案,你可以看一下(见issue:9954):
分析原因-session-track-schema
至于MariaDB是MySQL 的一个 branch,还是MariaDB 是 MySQL 的一个fork先不讨论,不过它俩似乎一直就存在兼容性的问题,Metabase MySQL/MariaDB driver是mariadb-java-client这个包。
Metabase不支持Alibaba RDS MySQL 5.6.16-log,因为在0.32.0版本中更改为MariaDB Connector/J,因为旧MySQL不支持session-track-schema。
后来发现就是这个5.6.16-log这个小版本有问题,目前其他的版本未发现存在问题。
解决办法-mariadb-java-client包
首先确定Metabase使用的MySQL/MariaDB driver版本,到project下面
1 | [org.mariadb.jdbc/mariadb-java-client "2.3.0"] ; MySQL/MariaDB driver |
需要下载源码包:mariadb-java-client-2.3.0-sources.jar(Metabase当前版本用的这个版本)
1 | AbstractConnectProtocol.java-542行注释掉 |
编译完替换就重新启动即可,也可以直接下载我编译完的 AbstractConnectProtocol.class