求助:MYSQL LONGTEXT字段在检索时被截断

我有一个设置为 utf8 general ci 的 LONGTEXT 字段,它包含一个很大的 JSON 值,当我查看 phpmyadmin 中的值时,我可以看到 JSON 文本的开头和结尾(它也是有效的)。

但是当我把 JSON 列传输到屏幕上时,我只能得到一半的文本,在调用 JSON decode 返回 NULL 之前。

下面是代码的一个片段:

$stmtproducts = $db->prepare('SELECT * FROM products WHERE id = ?');  
$stmtproducts->execute([$id]); 

$product = $stmtproducts->fetch(PDO::FETCH_ASSOC);

var_dump($product['json_txt']);

我已经将max_LEXED_Packet更改为512 m,但文本仍会被截断。

参考GPT和自己的思路:

这个问题可能是因为某些PHP配置的限制导致的。首先,您可以检查您的PHP配置中的以下设置:

  1. post_max_size - 如果超过了这个值,请求将被截断
  2. memory_limit - 如果超过了这个设置,PHP将尝试从中断点开始重新启动

除了这些设置,您还可以检查PHP错误日志以查看是否有任何有用的信息。

如果您的PHP设置没有问题,则您可能需要更改MySQL的配置,以便支持更大的数据包。您可以将以下设置添加到my.cnf文件中:

max_allowed_packet = 512M

这应该可以解决您当前遇到的问题。如果您对此仍有疑问,请告诉我。