错误代码:1210。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

我正在处理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_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