发送查询数据包时出错

2022-08-30 10:22:44

我试图将一些数据插入数据库,但我得到这个错误“发送查询数据包时出错"

$insertDeta = $conPat->prepare("insert into table1(data) VALUES(:data)");
$insertDeta->bindParam(':data',$data);
$conPat->beginTransaction();    
    $insertDeta->execute();
$conPat->commit();

但我认为问题是数据的大小超过16MB。
列的数据类型设置为longtext,我认为这可以将数据保持为4GB。

我不知道PDO在运行查询或将16MB数据传输到数据库时是否遇到问题。
这是我唯一可以做出的猜测,因为mysql可能会以数据包的形式发送数据,并且数据包无法容纳高达16MB的数据。


答案 1

你猜对了 MySQL 对数据的大小有限制,你需要在一小组记录中中断查询,或者 max_allowed_packet你可以通过使用SET GLOBAL max_allowed_packet=524288000;


答案 2

您可以通过以下几个步骤来解决此问题:

1)打开终端窗口

2)请在您的终端中写下以下命令

ssh root@yourIP port

3)输入root密码

4)现在使用以下命令编辑您的服务器my.cnf文件

nano /etc/my.cnf  

如果命令无法识别,请先执行此操作或尝试vi,然后重复:yum install nano。

  vi /etc/my.cnf 

5)在[MYSQLD]部分下添加行。:

max_allowed_packet=524288000 (obviously adjust size for whatever you need) 
wait_timeout = 100

6) 控制 + O (保存) 然后输入 (确认) 然后控制 + X (退出文件)

7)然后通过以下命令重新启动mysql服务器

/etc/init.d/mysql stop
/etc/init.d/mysql start

8) 您可以通过进入 PHPMyAdmin 或打开 SQL 命令窗口并执行来验证:

SHOW VARIABLES LIKE 'max_allowed_packet'

这对我有用。我希望它应该对你有用。


推荐