即使我将数据类型选择为 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 数据类型正确使用姿势