如何通过java jdbc连接位于Namecheap服务器上的MySQL数据库?

时间:2016-03-03 23:35:03

标签: mysql jdbc remote-access

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_pa​​cket远大于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连接到服务器,这应该是否重要?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以尝试更改这些行吗?

    session.setPortForwardingL(<local port>, "<My web server>", <remote port>);

这将创建一个本地端口,用于侦听Web服务器上的远程端口。现在您需要与本地端口建立连接,以便URL更改为: -

String url = "jdbc:mysql://localhost:<local port>/";