Spring Boot - 无法连接 Azure MySQL 数据库



我是从Spring启动应用程序连接azure MySQL数据库的新手。

以下是application.properties中提到的片段

spring.datasource.url=jdbc:mysql://XXXX.mysql.database.azure.com:3306/MyDbName
spring.datasource.username= ******
spring.datasource.password= ******

我遇到了以下例外情况

org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Unknown system variable 'query_cache_size'

我已经用谷歌搜索过,在某处提到需要将MySQLConnector的版本更新为8.0.13

请帮我找到解决方案。

基于您的异常,这不是因为 Azure mysql。这是因为系统变量"query_cache_size"。请参考:java.sql.SQLException:未知的系统变量"query_cache_size"

我也在azure MySQL上遇到了这种快乐。正如 dvo 所提到的,当它认为它低于版本 8.0.3 时,它会将此变量放入其中。

来自com.mysql.cj.NativeSession.java...

if (!versionMeetsMinimum(8, 0, 3)) {
queryBuf.append(", @@query_cache_size AS query_cache_size");
queryBuf.append(", @@query_cache_type AS query_cache_type");
}

但是由于我的 Azure MySQL 版本是 8.0.15,它与我的驱动程序版本相匹配,所以我怀疑虽然数据库很可能是版本 8,但驱动程序处理的堆栈的一部分不是。

编辑:

从 https://learn.microsoft.com/en-us/azure/mysql/concepts-limits

当前已知问题

建立连接后,MySQL服务器实例显示错误的服务器版本。要获取正确的服务器实例引擎版本,请使用 select version((;命令。

所以我猜这是问题所在,就目前而言,Azure MySQL 8将无法与Java mysql连接器一起使用。

我可能会考虑自己构建连接器并将版本号硬编码为 8.0.15。多么快乐。

编辑编辑:

修改了服务器版本.java parseVersion(...( 返回

return new ServerVersion(8, 0, 15);

这足以让我继续我的工作。

这是一个问题Microsoft应该尽快修复他们这边。

相关内容

  • 没有找到相关文章

最新更新