即使我选择数据类型为json,MariaDB数据类型也会自动将json更改为长文本

问题描述 投票:0回答:2

这正是我选择数据类型为 json 时发生的情况

json mariadb
2个回答
6
投票

来自 MariaDB 网站:

JSON 是 LONGTEXT 的别名,出于兼容性原因而引入 使用 MySQL 的 JSON 数据类型。 MariaDB 将其实现为 LONGTEXT 相反,由于 JSON 数据类型与 SQL 标准相矛盾,并且 MariaDB 的基准测试表明性能至少相当。

https://mariadb.com/kb/en/json-data-type/


-3
投票

解决方案:MariaDB没有JSON,自动将其转换为LONGTEXT

https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=e2feaf39e86e2888d441a53bcc5add2b

所以,我在xamp中将mariaDb更改为MySQL。现在我可以设置 Json 数据类型了

如何更改:https://stackoverflow.com/a/58973750/16180226

注意:实际上我正在使用 Node js APi 发送请求。

这里是请求主体:(出于测试目的忽略此字段)

这里的数据是req body

查询:'INSERT INTO table SET ?',数据

    {
        "name": "Test",
        "description": [
            {
                "hello": "description"
            },
            {
                "hello": "description"
            },
            {
                "hello": "description"
            }
        ],
        "monthlySell": {
            "hello": "monthlySell"
        }
    }

}

如果 req body 键具有对象字段,则进行字符串化的代码:

现在我不必担心 stringify,如果一个文件是对象,它会自动 stringyfiy 来存储 Json

    const keys = Object.keys(data);
    console.log(keys.length)
    for (let i=0; i<keys.length; i++)
    {
        if(typeof data[keys[i]]==='object')
        {
            console.log(typeof keys[i] +data[keys[i]] )
            data[keys[i]]=JSON.stringify(data[keys[i]])
        }
    
    }
© www.soinside.com 2019 - 2024. All rights reserved.