我有一个设置为 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配置中的以下设置:
除了这些设置,您还可以检查PHP错误日志以查看是否有任何有用的信息。
如果您的PHP设置没有问题,则您可能需要更改MySQL的配置,以便支持更大的数据包。您可以将以下设置添加到my.cnf文件中:
max_allowed_packet = 512M
这应该可以解决您当前遇到的问题。如果您对此仍有疑问,请告诉我。