com.mysql.jdbc.PacketTooBigExceptioncom.mysql.jdbc

2019-05-12 05:48发布

我有一个很大的问题! 当我这样做:

 String query = "SELECT * FROM utente WHERE confermato=1 and Username='" + username
            + "' AND Password='" + password + "'";

        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = DriverManager.getConnection("ind_server/nome_db","user","password");

Eclipse中给了我这个错误:

Packet for query is too large (4739923 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.

因此,首先:此查询是真的这么大? 该命令我必须在ssh来wrtite:后-.-? 这是我第一次因为这个东西! 提前致谢!

我没有在服务器上的root权限!

我尝试使用这样的:

 mysql>set global max_allowed_packet=32*1024*1024;

但它给我这个错误:ERROR 1227(42000):访问被拒绝; 你需要SUPER权限进行此操作

编辑

现在,我已经修改了max_allowed_pa​​cket的变量32MB。 停止并重新启动服务器,但日食给了我同样的错误!

我能做什么?

Answer 1:

我不得不应付同样的错误信息,通过抛出DriverManager.getConnection(URL,username,password) 。 我甚至得到了相同的“幻数”(4739923> 1048576); google搜索那些“幻数”将展示从人们也越来越被一些的DriverManager.getConnection语句引发错误的结果。 在我的情况,有关数据包大小错误消息完全是误导成份; 我只是用一个错误的URL,而整个事情不得不做与数据包大小NOTHING。

也许这将有助于解释什么是错的我使用的URL - 虽然这是一种尴尬(这是一种非常愚蠢的错误。)在这里不言而喻。

我成功地连接到远程服务器/数据库名为SQLyog的(有点像phpMyAdmin的)一些“数据库管理器”软件。 为了连接,我不得不放弃SQLyog的2套的事情。 首先,URL(或IP地址),用户名,密码和端口,让自己的计算机可以与服务器连接。 其次,URL,端口,MySQL用户名,MySQL的密码,以便服务器机器可以连接到数据库(位于该非常机器上)。所以有2个网址,并2个端口(以及2名和2个密码)之一客户端 - >服务器和一台服务器 - >数据库。

现在,决定哪个URL那些挑中的DriverManager.getConnection的Java代码,我选错了一个,愚蠢的我! 显然,必须是一个用于第二步骤(服务器 - >数据库),而不是在第一步骤(客户端 - >服务器); 所有的servlet后在服务器上运行,这样一个事实,即该servlet甚至运行显示,第1步已经照顾,和步骤2有待完成。 由于数据库是同一台机器上机器的servlet中运行,该URL只是“localhost”的; 或者,更确切地说, “JDBC:MySQL的://本地主机:3306 / myDatabaseName”。 而不是 “的jdbc:mysql的://domainNameOfServer.com:somePortNumber / myDatabaseName”,它抛出上述错误。

愚蠢的错误和非常愚蠢的错误消息。 我想适合。



Answer 2:

分组查询过大(2285643> 1048576)。 您可以通过设置max_allowed_pa​​cket的”变量更改服务器上的此值。

SOLUTIONS:-
You can see it's current value in mysql like this:

SHOW VARIABLES LIKE 'max_allowed_packet'

You can try to change it like this, but it's unlikely this will work on shared hosting:

SET GLOBAL max_allowed_packet=16777216;
and restart mysql service..


Answer 3:

编辑您的my.cnf(ubunut)或my.ini的文件(Windows),并设置max_allowed_pa​​cket的大小。

max_allowed_pa​​cket的= 512M

然后,重新启动你的mysql server.It将工作



Answer 4:

但它给我这个错误:ERROR 1227(42000):访问被拒绝; 你需要SUPER权限>此操作

尝试须藤设置全局max_allowed_pa​​cket个= 32 * 1024 * 1024



Answer 5:

下面为我​​工作

编辑my.cnf文件(我的是在/ etc / MySQL的)

然后更改max_allowed_pa​​cket值我将它设置为max_allowed_pa​​cket个= 200M

请确保您重新启动MySQL的更改生效



Answer 6:

我遇到这个问题,并通过改变我的MySQL连接器版本。可能是我的聚甲醛的MySQL连接器版本过高解决这个问题。

堆叠印刷:

Thu Nov 03 18:24:03 CST 2016 WARN: Invalid value 'null' for server variable named 'auto_increment_increment', falling back to sane default of '1'.
Exception in thread "main" com.mysql.jdbc.PacketTooBigException: Packet for query is too large (44 > -1). You can change this value on the server by setting the max_allowed_packet' variable.
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:577)
    at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:417)
    at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3105)
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2336)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2729)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962)
    at com.sparkproject.jdbc.JDBCHelper.main(JDBCHelper.java:382)


Answer 7:

If you are unable to stop your database, you can alternatively set the value of the max allowed packet parameter dynamically. To do so:

1. Log in as a root user.
2. You'll need to set the value as an integer, rather than '256M'. 256M is equivalent to 256*1024*1024, or 268435456.
3. mysql> SET GLOBAL max_allowed_packet=268435456;
4. To check that this has been applied:

    a. Relogin to your mysql client.

    b. mysql> SELECT @@max_allowed_packet;

Restart your Confluence instance.

You will still need to update your /etc/my.cnf file as described in the method above to make the change persistent.



Answer 8:

还有我们不知道你的数据库有多大,但你的查询是非常具体的。

作为max_allowed_pa​​cket个,检查这篇文章:

如何检查和设置的mysql的max_allowed_pa​​cket变量



文章来源: com.mysql.jdbc.PacketTooBigException