使用 gcp cloud sql 代理时如何启用 rewriteBatchStatements?

How to enable rewriteBatchStatements when using gcp cloud sql proxy?

我们在 GKE 上部署了一个微服务,它通过云 sql 代理连接到 GCP 上的 mysql 数据库实例。我们正在使用 spring jdbctemplate.batchUpdate 来执行批处理 insert/update 语句。 当我将 rewriteBatchStatements=true 附加到 jdbc url 作为 jdbc:mysql://localhost:3306/db?rewriteBatchStatements=true 时,它​​无法连接到数据库实例。

上次成功发送到服务器的数据包是在 0 毫秒前。驱动程序尚未从服务器收到任何数据包。 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 在 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) 在 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) 在 com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) 在 com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) 在 com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91) 在 com.mysql.cj.NativeSession.connect(NativeSession.java:144) 在 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956) 在 com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) ...省略了 40 个常见框架 原因:java.net.ConnectException:连接被拒绝(Connection refused) 在 java.base/java.net.PlainSocketImpl.socketConnect(本机方法) 在 java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) 在 java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) 在 java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)

如何启用 rewriteBatchStatements?

此异常是由于 GKE 中缺少云代理的服务条目所致。 jdbc:mysql://localhost:3306/db?rewriteBatchStatements=true 工作正常