最近将表列从数据类型 Text 迁移到 Json。
假设我有这个表定义的列表表,并在其中插入了几条记录
CREATE TABLE `listing` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`data` json NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
当我尝试更新 JSON 指定列中的任何数据时,它会引发异常:数据截断:无法从具有字符集“二进制”的字符串创建 JSON 值
虽然跟随文章:https ://dev.mysql.com/doc/refman/5.7/en/json.html
这也是指utf8mb4_bin因为 JSON 值的比较区分大小写