Packet for query is too large (4739923 > 1048576).
You can change this value on the server by setting the max_allowed_packet' variable.
这个错误是我的结束。在我尝试访问的服务器上,此max_allowed_packet远大于1,048,576。
我有一段时间解决这个问题,诉诸尽可能多的论坛。它应该很简单。我想从我的计算机上的Java程序连接到我的namecheap服务器上的MySQL数据库。我有IP地址,ssh的端口。我可以完全访问数据库并从mySQL Workbench查询。
这是我的代码
package testingdb;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.JSch;
import com.mysql.jdbc.Driver;
public class DatabaseTesting {
public static void main(String[] args) {
String huser = "user";
String hpass = "*********";
String userName = "username_user";
String password = "*********";
String host = "<My web server>";
String url = "jdbc:mysql://<My Web Server>:<port>/";
Session session= null;
try {
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session = jsch.getSession(huser, host, <port>);
session.setConfig(config);
session.setPassword(hpass);
session.connect();
System.out.println("Connected through SSH");
session.setPortForwardingL(3306, "127.0.0.1", <port>);
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Logging into Database: "+ userName);
Connection con = DriverManager.getConnection(url, userName, password);
System.out.println("Server connected successfully");
//Statement st = con.createStatement();
//ResultSet results = st.executeQuery("SELECT * FROM NPC_DATA");
//System.out.println(results);
}
catch(Exception e) {
System.out.println("connection failed . . .");
System.out.println(e.getMessage());
}
}
}
我的hpass和用户在我输入时都是正确的(我隐藏它们的原因很明显)我不确定会出现什么问题。帮助告诉我,Namecheap不能用Java运行,但如果我的客户端使用JAVA连接到服务器,这应该是否重要?非常感谢你。
答案 0 :(得分:0)
您可以尝试更改这些行吗?
session.setPortForwardingL(<local port>, "<My web server>", <remote port>);
这将创建一个本地端口,用于侦听Web服务器上的远程端口。现在您需要与本地端口建立连接,以便URL更改为: -
String url = "jdbc:mysql://localhost:<local port>/";