MySQL/MariaDB长JSON无法通过JSON_VALID校验的问题排查
问题:含大量嵌入撇号的合法JSON无法通过MySQL/MariaDB的JSON_VALID校验
表结构
我在MySQL/MariaDB中创建了带有JSON_VALID约束的表,SQL语句如下:
CREATE TABLE `oa24_json` ( `id` int(11) NOT NULL AUTO_INCREMENT, `appnum` varchar(8) NOT NULL, `oa_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`oa_json`)), `last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
问题现象
- 待插入的JSON已验证合法,但插入时触发MySQL/MariaDB错误码4025(推测未通过
JSON_VALID校验) - 在简单案例中,转义JSON字符串中的嵌入撇号可通过
JSON_VALID校验,示例SQL:
SELECT JSON_VALID('{"response":{"numFound":7,"start":0,"docs":[ { "patentApplicationNumber":["16286064"], "applicationDeemedWithdrawnDate":"0000-12-30T05:00:00Z", "applicationStatusNumber":120, "inventionTitle":["INITIATING A FUNDS TRANSFER FROM A PLAYER\'S MOBILE DEVICE TO A CASINO WALLET THAT REQUIRES HUMAN VALIDATION OF THE PLAYER\'S IDENTITY"] }]}}') AS 'Valid ?';
- 但对于包含107个嵌入撇号的长数据,仅转义撇号的方法无效(其余转义字符如
\n、\"由美国专利商标局(USPTO)自动生成)
求助
请问还需做哪些操作才能让这份合法JSON通过JSON_VALID校验?
内容的提问来源于stack exchange,提问作者Scavokovich
相关产品推荐
相关产品推荐

