0

我对带有长文本字段的 MariaDB 有疑问。它仅限于 32770 个字符,并且无法将其放大。

SELECT CHAR_LENGTH(longtext_column) from table where id = x;

我像这样编辑了我的cnf:

[mysqld]
max_allowed_packet     =  1000M

我确认可以运行此查询:

在此处输入图像描述

无论如何,我运行一个超过 32770 个字符的更新查询,并且总是将文本截断为 32770。

另一方面,我在官方文档中将其标记为:

如果值包含多字节字符,则有效最大长度会更小。LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。

最后,也许有用的信息:

  1. 我尝试存储的字符串是 JSON。
  2. 我在另一台服务器上尝试了相同的结果。
  3. 我正在运行 Navicat 来运行这些查询。

我错过了什么?

Edit1:我从来没有得到MySQL Error 1153 - Got a packet bigger than 'max_allowed_packet' bytes错误。

编辑 2:MySql 版本 15.1 Distrib 10.3.31-MariaDB

编辑 3:SHOW CREATE TABLE tbl_name命令文本(缩短为相关字段):

| table_name | CREATE TABLE `table_name` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `column_in_question` longtext COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7498 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

Edit4:我上传了一个用于测试 de 32KB 限制的 MySql 脚本。

https://pastebin.com/NUw7Q1cE

4

0 回答 0