我对带有长文本字段的 MariaDB 有疑问。它仅限于 32770 个字符,并且无法将其放大。
SELECT CHAR_LENGTH(longtext_column) from table where id = x;
我像这样编辑了我的cnf:
[mysqld]
max_allowed_packet = 1000M
我确认可以运行此查询:
无论如何,我运行一个超过 32770 个字符的更新查询,并且总是将文本截断为 32770。
另一方面,我在官方文档中将其标记为:
如果值包含多字节字符,则有效最大长度会更小。LONGTEXT 列的有效最大长度还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。
最后,也许有用的信息:
- 我尝试存储的字符串是 JSON。
- 我在另一台服务器上尝试了相同的结果。
- 我正在运行 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 脚本。