即使我将数据类型选择为 json,MySQL 数据类型也会自动将 json 更改为 longtext

Posted

技术标签:

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

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

【问题讨论】:

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

解决方案:MariaDB 没有 JSON,会自动转换成 LONGTEXT

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

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

如何更改:https://***.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]])
        
    
    

【讨论】:

以上是关于即使我将数据类型选择为 json,MySQL 数据类型也会自动将 json 更改为 longtext的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势

Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势

MYSQL - 如果我有一个 json 类型的列,我可以根据 JSON 中的内容进行选择

8.Mysql数据类型选择

MySQL + JSON = 王炸。。

mysql中的json数据类型