我在 linux 机器上托管了 MYSQL 服务器。我正在尝试从我的 Java 应用程序访问服务器。在此过程中,我遇到了一条错误消息,该错误消息在指定的分辨率下似乎很常见。我在 Mysql 服务器上尝试了相同的方法,即 my.cnf 并更新了 max_allowed_packet
并执行了重新启动。
package com.test.ssh;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectJDBC {
public static void main(String[] args) {
String url = "jdbc:mysql://10.20.30.40:32/BI_data" ;
String username = "testadmin";
String password = "ServerABC";
try {
Connection connection = DriverManager.getConnection(url,username,password);
System.out.println("Connected to the database");
} catch (SQLException e) {
System.out.println("Error!!");
e.printStackTrace();
}
}
}
看到的错误是
com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (4,739,923 > 65,535). You can change this value on the server by setting the 'max_allowed_packet' variable.
at mysql.connector.java@8.0.26/com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:107)
at mysql.connector.java@8.0.26/com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)
at mysql.connector.java@8.0.26/com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)
at mysql.connector.java@8.0.26/com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
at mysql.connector.java@8.0.26/com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at com.test.ssh.ConnectJDBC.main(ConnectJDBC.java:18)
我的最终目标是通过 SSH 连接远程 MySQL 服务器。但是这个问题阻碍了我的追求。任何有关分辨率的输入都将非常有帮助。