0


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

  • 这个语句的错误在于使用了错误的语法来查询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.so1. 重启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 支持。
标签: mysql 数据库 sql

本文转载自: https://blog.csdn.net/cbaln0/article/details/131002928
版权归原作者 隔壁小白 所有, 如有侵权,请联系我们删除。

“mysql 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist”的评论:

还没有评论