You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

求助:MariaDB无法添加JSON类型列是版本问题吗?

问题解答:MariaDB添加JSON列失败的原因及解决办法

没错,这绝对是版本问题导致的,咱们来一步步理清楚:

核心原因:MariaDB版本不支持原生JSON类型

你用的是MariaDB 10.1.31,而MariaDB是从10.2.7版本才开始引入原生JSON数据类型的。更早的10.1.x系列并不支持这个类型,所以你执行ALTER TABLE my_table ADD some_column json;会报语法错误,phpMyAdmin的类型下拉框里也找不到JSON选项——毕竟工具只会显示服务器实际支持的数据类型。

顺带提一句,MySQL是从5.7.8开始支持原生JSON的,但MariaDB的版本迭代节奏和MySQL不一样,别搞混了。

你的两种解决思路

1. 不升级数据库:用文本类型替代

如果暂时不想升级MariaDB,你可以用TEXTLONGTEXT类型来存储JSON格式的字符串,同时利用MariaDB 10.1已经支持的部分JSON函数来处理数据,比如:

  • JSON_VALID():验证字符串是否是合法的JSON格式
  • JSON_EXTRACT():提取JSON中的指定字段
  • JSON_SET():修改JSON中的字段值

举个例子:

ALTER TABLE my_table ADD `some_column` LONGTEXT;
-- 插入时可以验证格式
INSERT INTO my_table (some_column) VALUES ('{"key": "value"}') WHERE JSON_VALID('{"key": "value"}');

不过这种方式没有原生JSON类型的约束(比如自动验证JSON合法性)和性能优化,只能作为临时方案。

2. 升级MariaDB到支持的版本

如果长期需要使用JSON类型的特性,最好的办法是把MariaDB升级到10.2.7及以上版本(推荐用更稳定的10.3+或更高系列)。升级完成后:

  • 你可以正常执行ALTER TABLE语句添加json类型列
  • phpMyAdmin的类型下拉框里也会出现JSON选项
  • 还能享受到原生JSON类型带来的自动格式验证、高效的JSON数据查询、索引支持等特性

内容的提问来源于stack exchange,提问作者i.brod

火山引擎 最新活动