我在这行代码遇到了
我查看了这篇文章中提到的所有内容:
我遇到了错误:“查询数据包太大(4739923 > 1048576)。您可以通过设置'max_allowed_packet'变量来在服务器上更改此值。”
虽然我已经在my.cnf中更改了数据包大小,并在此之后重新启动了mysql服务。有什么建议吗?
注意:
我可以通过ssh连接,但这种方法似乎不是很合理!我可以在主函数中连接一次,然后将连接传递给所有类。
"Communications link failure"
的错误:mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:3306/db-name", "mu-user-name", "my-password");
我查看了这篇文章中提到的所有内容:
- 我在etc/mysql/my.cnf文件中增加了max-allowed-packet的值:max_allowed_packet = 5073741824------ [mysqldump] max_allowed_packet = 1G
- bind-address是127.0.0.1
- 所有超时值都相同
- 服务器上尚未安装Tomcat(新服务器)
- my.cnf中没有skip-networking
- 我可以ping通服务器
- 我通过ssh连接到mysql数据库
当我将查询字符串更改为以下内容时:
mySqlCon = DriverManager.getConnection("jdbc:mysql://**server ip address**:22/127.0.0.1:3306/db-name", "mu-user-name", "my-password");
我遇到了错误:“查询数据包太大(4739923 > 1048576)。您可以通过设置'max_allowed_packet'变量来在服务器上更改此值。”
虽然我已经在my.cnf中更改了数据包大小,并在此之后重新启动了mysql服务。有什么建议吗?
注意:
我可以通过ssh连接,但这种方法似乎不是很合理!我可以在主函数中连接一次,然后将连接传递给所有类。
public my-class-constructor() {
try {
go();
} catch (Exception e) {
e.printStackTrace();
}
mySqlCon = null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://" + rhost + ":" + lport + "/";
String db = "my-db-name";
String dbUser = "dbuser";
String dbPasswd = "pass";
try {
Class.forName(driver);
mySqlCon = DriverManager.getConnection(url + db, dbUser, dbPasswd);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void go() {
String user = "ssh-user";
String password = "ssh-pass";
String host = "ips-address";
int port = 22;
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
lport = 4321;
rhost = "localhost";
rport = 3306;
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
int assinged_port = session.setPortForwardingL(lport, rhost, rport);
System.out.println("localhost:" + assinged_port + " -> " + rhost
+ ":" + rport);
} catch (Exception e) {
System.err.print(e);
e.printStackTrace();
}
}