我的sql:PacketTooBigException:查询包太大(4,739,923> 65,535)

时间:2017-09-23 00:55:38

标签: mysql jdbc max-allowed-packet

我正在尝试连接到raspbery pi上的数据库。我已经在pi上下载了mysql,并且已经在那里创建了一个数据库。我正在尝试使用驱动程序管理器进行连接。

这是我的代码:

public static void main(String[] args) {
    try {
        String host = "jdbc:mysql://scheduleit.duckdns.org:99/scheduleit";
        String uName = username;
        String uPass = password;
        Connection con = DriverManager.getConnection(host, uName, uPass);
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

我已进入配置文件并将max_allowed_packet更改为[32M的{​​{1}}。我查看了其他配置文件,无法找到另一个要编辑的max_allowed_pa​​cket字段。此外,我在mysqldump中使用了命令SET GLOBAL max_allowed_packet=32M;

我很好奇的一件事是主机名是否错误。我使用端口99进入pi,但是当我与mysql连接时,我可能会使用不同的端口? DriverManager的默认端口是3306,我试过了,但没有得到连接。

最后,我正在使用mysql,我的理解基本上是mysql,因为我使用mariadb命令登录。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:2)

MySQL服务器和客户端(本例中为JDBC)都必须增加max_allowed_pa​​cket的设置。 max实际上是客户端和服务器配置的 less

对于服务器,您可以使用SET GLOBAL max_allowed_packet进行更改。您还应该在服务器的my.cnf文件中更改它,因为服务器重新启动时SET GLOBAL更改会丢失。

对于客户端,如上面Michael所述,您可以将其指定为JDBC URL中的属性。除了JDBC属性拼写为 camelCase

String host = "jdbc:mysql://scheduleit.duckdns.org:99/scheduleit?maxAllowedPacket=33554432";

有关JDBC URL属性的更多文档,请参阅https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html