0

我正在本地设置一个 Web 应用程序,我必须获取表中的所有项目,但是当我这样做时select * from my_table,它给了我这个错误ERROR 2020 (HY000): Got packet bigger than 'max_allowed_packet' bytes

我尝试了很多选择,其中一些包括:

-设置max_allowed_packet我的\etc\mysql\mysql.conf.d\mysqld.cnf\etc\mysql\mysql.conf.d\mysqldump.cnf(我没有使用转储,但为了安全起见),设置为 1G 然后 2G 等。

- 还尝试在终端的mysql中使用set global net_buffer_length=1000000;andset global max_allowed_packet=1000000000;

当我使用mysql --max_allowed_packet=100M -u root -它提供所有数据时,我取得了一些成功,但问题是它只能在终端中工作,但我必须在我的 Web 应用程序中获取数据,它不会工作。

有趣的是:我尝试使用limit,所以当我使用时select * from my_table limit 200,它会给出预期的结果(但只有200行)。总行数约为 350,因此错误出现在高于 200 行的数据中。要检查行结果的大小,我使用了以下查询: select sum(row_size) from ( select char_length(id)+ char_length(code)+ char_length(name)+ char_length(url) +char_length(group)+ char_length(template)+ char_length(html) + char_length(association) + char_length(status) + char_length(created_at)+ char_length(updated_at) + char_length(html_generation_date) as row_size from myTable limit 311,1) as tbl1;这给了我:43095 而对于limit 150,1上述查询给出:94428。所以行大小似乎没有成为问题。

我尝试了MySQL Error 1153 - Got a packet greater than 'max_allowed_pa​​cket' byteshttps://serverfault.com/questions/102564/error-2020-got-packet-bigger-than-max-allowed-packet-bytes -当倾销表

基本上,我想做这样的事情:myTable::model()->findAll();在我的 PHP Yii 应用程序中,它相当于select * from my_table,然后我可以使用数据来填充我的列表。

表架构是: +----------------------+--------------+------+-----+-------------------+-----------------------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(150) | NO | | NULL | | | name | varchar(150) | NO | | NULL | | | url | varchar(255) | NO | | NULL | | | group | int(11) | NO | MUL | NULL | | | template | int(11) | NO | | NULL | | | html | longtext | YES | | NULL | | | association | varchar(100) | NO | | NULL | | | status | tinyint(1) | NO | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | | updated_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | html_generation_date | timestamp | YES | | NULL | |

而mysql版本是:14.14 分布:5.7.26。数据库引擎是 InnoDB。

任何帮助将不胜感激。

4

0 回答 0