【问题标题】:MySQL data type automatically change json to longtext even if i choose data type to json即使我将数据类型选择为 json,MySQL 数据类型也会自动将 json 更改为 longtext
【发布时间】:2021-08-26 22:19:33
【问题描述】:

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

【问题讨论】:

  • 这种情况只发生在 phpMyAdmin 中,还是在 mysql CLI 中发生?
  • 未使用 MySql CLI 检查
  • @Barmar 是的,mysql CLI 也发生了这种情况
  • 您尝试更改之前的数据类型是什么?
  • 你的数据库是 MySQL 还是 MariaDB? MariaDB 没有 JSON,会自动将其转换为 LONGTEXT。

标签: mysql json


【解决方案1】:

解决方案: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 发送请求。

这里是请求正文:(忽略此字段以进行测试)

这里的数据是请求体

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

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

}

如果请求主体键具有对象字段,则进行字符串化的代码:

现在我不用担心stringify,如果filed是object,它会自动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]])
        }
    
    }

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2011-07-02
    • 2020-12-29
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多