3140: ER_INVALID_JSON_TEXT: Invalid JSON text(无效的 JSON 文本)
MySQL含义
向 JSON 列或 JSON 函数传入了无效(语法损坏)的 JSON 文本。MySQL 无法将该值解析为 JSON,因此拒绝该操作。
原因
未闭合的引号/括号、末尾多余的逗号、单引号、转义字符错误,或向 JSON 列发送了纯文本。在向 JSON_SET、JSON_INSERT 等函数或 JSON 类型列传入格式错误的文本时出现。
解决方法
将 JSON 文本修正为合法语法:使用双引号、去掉末尾逗号、检查转义。测试文本是否有效:SELECT JSON_VALID('{...}');(有效时返回 1)。在应用层使用可靠的库序列化 JSON,并在发送到服务器之前进行校验。
同一数据库的其他条目
- 1118ER_TOO_BIG_ROWSIZE: Row size too large(行大小过大)
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length(在键定义中使用 BLOB/TEXT 列但未指定键长度)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log(不安全的语句被写入二进制日志)
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value(表中没有对应该值的分区)
- 1049Unknown database 'name'(未知数据库 'name')
- 1364Field 'name' doesn't have a default value(字段 'name' 没有默认值)
- 1206The total number of locks exceeds the lock table size(锁的总数超过了锁表大小)