错误代码:1210。JSON_表的参数不正确
我正在处理JSON表,遇到了一个问题。我得到以下错误: 错误代码:1210。JSON_表的参数不正确 我正在AWS上使用MySQL引擎版本8.0.20和MySQL工作台 当我直接从sf.purchases表中使用JSON_Table命令时,我能够获得预期的JSON输出。例如,这项工作:错误代码:1210。JSON_表的参数不正确,json,mysql-workbench,Json,Mysql Workbench,我正在处理JSON表,遇到了一个问题。我得到以下错误: 错误代码:1210。JSON_表的参数不正确 我正在AWS上使用MySQL引擎版本8.0.20和MySQL工作台 当我直接从sf.purchases表中使用JSON_Table命令时,我能够获得预期的JSON输出。例如,这项工作: SELECT pur.*, jt.* FROM sf.purchases AS pur, JSON_TABLE (pur.items, '$[*]' COLUMNS ( C_jt
SELECT pur.*, jt.*
FROM sf.purchases AS pur,
JSON_TABLE (pur.items, '$[*]'
COLUMNS (
C_jt_id FOR ORDINALITY,
C_jt_item_uid VARCHAR(255) PATH '$.item_uid',
C_jt_item_name VARCHAR(255) PATH '$.name',
C_jt_qty INT PATH '$.qty',
C_jt_price DOUBLE PATH '$.price')
) AS jt;
它转换的一种语言
“[{数量:1,名称:测试,价格:59.99,项目编号:320-000002}”
分为相应的列
然而,当我创建一个视图时,我无法让JSON_表在结果表上工作
以下是我创建的视图:
CREATE VIEW sf.lp AS
(SELECT * FROM sf.purchases);
下面是不起作用的代码
SELECT pur.*, jt.*
FROM sf.lp AS pur,
JSON_TABLE (pur.items, '$[*]'
COLUMNS (
C_jt_id FOR ORDINALITY,
C_jt_item_uid VARCHAR(255) PATH '$.item_uid',
C_jt_item_name VARCHAR(255) PATH '$.name',
C_jt_qty INT PATH '$.qty',
C_jt_price DOUBLE PATH '$.price')
) AS jt;
响应为:错误代码:1210。JSON_表的参数不正确
我已经检查了以下内容:
我减少了列数,看看这是否会影响到什么
我已经检查了数据集,看看是否有奇怪的字符以某种方式被引入
这两个表以及列和数据类型是相同的。最重要的是,如果表sf.purchases和视图sf.lp都是JSON类型,则项是JSON
表和视图都使用字符集latin 1和排序规则latin1-swedish_ci
我已经运行了JSON_STORAGE_SIZE来验证表中的项目是否符合JSON格式
任何想法或帮助都将不胜感激。经过数小时的反复试验,我发现显然您需要一个GROUP BY,以使视图以JSON_表不会抛出错误的方式工作。这似乎有效,但我不知道为什么。按pur.purchase\u id从test.purchases pur组中选择*创建视图sf.lp;在我的例子中,GROUPBY没有减少行数。随着进一步的测试,我为什么分组似乎并不重要,但你必须有这条线。欢迎评论或解释。经过数小时的反复试验,我发现显然您需要一个groupby来让视图以JSON_表不会抛出错误的方式工作。这似乎有效,但我不知道为什么。按pur.purchase\u id从test.purchases pur组中选择*创建视图sf.lp;在我的例子中,GROUPBY没有减少行数。随着进一步的测试,我为什么分组似乎并不重要,但你必须有这条线。欢迎评论或解释。
SELECT pur.items,
JSON_STORAGE_SIZE(pur.items)
FROM sf.lp pur