Json 函数在 mysql 版本 5.7 和 mariadb 10.4.11 中工作,但在 10.1.44 中不工作
Posted
技术标签:
【中文标题】Json 函数在 mysql 版本 5.7 和 mariadb 10.4.11 中工作,但在 10.1.44 中不工作【英文标题】:Json functions working in mysql version 5.7 and mariadb 10.4.11 but not in 10.1.44 【发布时间】:2020-08-18 17:27:28 【问题描述】:我有一个奇怪的问题,在我将项目上传到 mysql 版本为 5.6 的服务器后,任何类型的 json 命令都不起作用。在我的本地主机中,我的服务器版本是 10.4.11,并且查询工作正常。我检查它必须至少为 5.7。所以我检查了 5.7 中的查询,它工作正常。然后我更新了我的服务器并更新到 10.1.44。但是现在查询不工作了
错误是:
语法错误或访问冲突 1305.function dbname.json_contains 不存在
下面是我使用 laravel 的查询之一
Card::SELECT('id','name','unique_id')
->where(DB::raw("json_extract(present_address, '$.union')"), 'some_union')
->where('geo_union_id','=',2218)
->get();
你能给我一个解决方案吗?如果有任何文档说明我将如何在 mariadb 10.1.44 中使用此功能,请务必告诉我
【问题讨论】:
mariaDB 中的 JSON 函数是在 V10.2.3 中引入的。简单的谷歌 好的,所以它在 5.7 或更高版本中工作,但在 mariadb 10.1.44 中不工作。如果我只是更新版本高于你所建议的,它应该可以工作。??? 是的,mariaDB 应该适用于 10.2.3 或更高版本。请记住 5.7 是 MySQL 的版本号。 MySQL 和 mariaDB 开始时几乎完全相同,但随着时间的推移,它们变得越来越不同 【参考方案1】:根据mariadb官方页面https://mariadb.com/kb/en/json-data-type/
在 MariaDB 10.2.7 中添加了 JSON 别名。
因此,如果您想在查询中使用 json 函数,则必须使用 mariadb 的 10.2.7 或更高版本。如果你不能这样做,只需使用LONGTEXT
并在where
子句中使用regex
搜索
【讨论】:
以上是关于Json 函数在 mysql 版本 5.7 和 mariadb 10.4.11 中工作,但在 10.1.44 中不工作的主要内容,如果未能解决你的问题,请参考以下文章
MySql 5.7对json_table()函数的一次变通替代