返回顶部
首页 > 资讯 > 数据库 >mysql 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist
  • 286
分享到

mysql 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist

mysql数据库sql 2023-09-05 07:09:00 286人浏览 安东尼
摘要

这个语句的错误在于使用了错误的语法来查询JSON字段。正确的写法应该是: SELECT * FROM test WHERE jsON_EXTRACT(userinfo, '$.mobile') = '142'; 这个语句

  • 这个语句的错误在于使用了错误的语法来查询JSON字段。正确的写法应该是:

    SELECT * FROM test  WHERE jsON_EXTRACT(userinfo, '$.mobile') = '142';

    这个语句使用了Mysql的JSON_EXTRACT函数来查询JSON字段中的mobile属性。

  • 如果按上面写法运行后提示  FUNCTioN xxx.JSON_EXTRACT does not exist 
  • 这个错误提示表明mysql数据库中没有名为JSONEXTRACT的函数。这可能是因为你使用的Mysql版本较旧,不支持JSONEXTRACT函数。

    解决方案是升级MySQL版本到5.7或以上,因为JSON_EXTRACT函数是从MySQL 5.7版本开始引入的。如果无法升级MySQL版本,可以考虑使用其他方法来查询JSON字段,例如使用LIKE运算符或者正则表达式

    以下是使用LIKE运算符查询JSON字段的示例:

    SELECT * FROM test WHERE userinfo LIKE '%"mobile":"142"%';

    这个语句使用了LIKE运算符来匹配JSON字段中的mobile属性。注意,这种方法可能会比JSON_EXTRACT函数慢一些,因为它需要对整个JSON字段进行匹配。

  • 我的mysql版本是5.7,但我并不想用 LIKE运算符进行查询
  • 如果你的MySQL版本是5.7,但是JSON_EXTRACT函数仍然无法使用,那么可能是因为你的MySQL配置中没有启用JSON函数。你可以通过以下步骤来启用JSON函数:

    [mysqld]# 启用JSON函数# MySQL 5.7.8及以上版本不需要此行# MySQL 5.7.7及以下版本需要此行# plugin-load=libmysql_json.so
    1. 重启MySQL服务。

    2. 确认JSON函数已经启用。可以使用以下命令来查看:

    SHOW PLUGINS;

    如果JSON函数已经启用,你可以使用以下语句来查询JSON字段:

    SELECT * FROM test WHERE JSON_EXTRACT(userinfo, '$.mobile') = '142';

    如果JSON函数仍然无法使用,你可以考虑使用其他方法来查询JSON字段,例如使用正则表达式。以下是使用正则表达式查询JSON字段的示例:

    SELECT * FROM test WHERE userinfo REGEXP '"mobile":"142"';

    这个语句使用了REGEXP运算符来匹配JSON字段中的mobile属性。注意,这种方法可能会比JSON_EXTRACT函数慢一些,因为它需要对整个JSON字段进行匹配。

  • 编辑MySQL配置文件my.cnf,在[mysqld]下添加以下行:
  • 在配置文件  添加 plugin-load=libmysql_json.so  运行 SHOW PLUGINS; 并没有启用 json函数
  • 如果在MySQL配置文件中添加了 plugin-load=libmysql_json.so,但是在运行 SHOW PLUGINS; 命令时没有看到 JSON 函数被启用,可能是因为 MySQL 没有加载该插件。你可以尝试以下方法来解决问题:

    复制   mysql> SELECT VERSION(), @@plugin_dir;

    如果 MySQL 版本是 5.7.8 或更高版本,并且插件目录中包含 libmysql_json.so 文件,则说明 MySQL 支持 JSON 函数。

       mysql> SHOW VARIABLES LIKE 'plugin_dir';

    然后在插件目录中查找 libmysql_json.so 文件是否存在。

       mysql> SHOW VARIABLES LIKE 'config_file';

    然后确认在 MySQL 配置文件中是否正确添加了 plugin-load=libmysql_json.so

       mysql> SHOW VARIABLES LIKE 'plugin_load';

    如果该变量的值为 ON,则说明 MySQL 有权限加载插件。如果该变量的值为 OFF,则需要修改 MySQL 配置文件中的 plugin-load 选项,并重启 MySQL 服务。

    如果以上方法都无法解决问题,可能是因为 MySQL 编译时没有启用 JSON 支持。你可以尝试重新编译 MySQL,并在编译时启用 JSON 支持。

  • 确认 MySQL 是否有权限加载插件。可以使用以下命令来查看 MySQL 是否有权限加载插件:
  • 确认 MySQL 配置文件是否正确。可以使用以下命令来查看 MySQL 配置文件的位置:
  • 确认 libmysql_json.so 文件是否存在于 MySQL 插件目录中。可以使用以下命令来查看插件目录:
  • 确认 MySQL 是否支持 JSON 函数。可以使用以下命令来查看 MySQL 版本和支持的插件:
  • mysql版本是5.7.39 但是 插件目录不存在 libmysql_json.so 
  • 如果你的 MySQL 版本是 5.7.8 或更高版本,但是在插件目录中找不到 libmysql_json.so 文件,可能是因为该文件没有被安装。你可以尝试以下方法来解决问题:

       mysql> SELECT VERSION(), @@plugin_dir;

    如果 MySQL 版本是 5.7.8 或更高版本,并且插件目录中包含 libmysql_json.so 文件,则说明 MySQL 支持 JSON 函数。

      mysql> SHOW PLUGINS;

    如果 JSON 插件已经安装,但是插件目录中没有 libmysql_json.so 文件,可以尝试重新安装 JSON 插件。

      mysql> INSTALL PLUGIN JSON SONAME 'libjson.so';

    如果 MySQL 报错提示找不到 libjson.so 文件,可以尝试使用以下命令:

      mysql> INSTALL PLUGIN JSON SONAME 'libmysqlclient.so';

    然后再次运行 SHOW PLUGINS; 命令,确认 JSON 插件已经安装并且已经启用。

    如果以上方法都无法解决问题,可能是因为 MySQL 编译时没有启用 JSON 支持。你可以尝试重新编译 MySQL,并在编译时启用 JSON 支持。

来源地址:https://blog.csdn.net/cbaln0/article/details/131002928

您可能感兴趣的文档:

--结束END--

本文标题: mysql 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist

本文链接: https://lsjlt.com/news/394914.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作