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

这篇具有很好参考价值的文章主要介绍了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.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 支持。文章来源地址https://www.toymoban.com/news/detail-692737.html

  • 确认 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 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql中json类型查询

    MySQL提供了一些函数和操作符,用于在JSON数据类型中进行查询。下面是一些常用的MySQL JSON查询使用方法: 这里的key是JSON字段中的键名。 使用JSON_CONTAINS函数可以过滤JSON数组中包含特定值的记录。例如,假设有一个名为data的JSON字段,其中包含一个名为tags的数组,可以使用以

    2024年02月16日
    浏览(37)
  • MySQL对JSON数据进行查询

    MySQL根据JSON字段的内容检索查询数据 使用 字段 - ‘$.json’ 属性’ 进行查询条件 以下这两种会快很多,可以自己测试 使用 json_extract 函数查询,json_extract(字段, “$.json属性”) 根据json数组查询,用 JSON_CONTAINS (字段, JSON_OBJECT(‘json属性’, “内容”)) MySQL5.7以上支持JSON的操作

    2024年02月11日
    浏览(22)
  • Mysql中json类型数据查询

            mysql在5.7版本之后就开始支持json数据类型,并且mysql8.0版本对json的处理已经做的非常完善了。json数据类型的优点缺点可自己查询,本文主要介绍一些关于json数据类型的查询操作。 下面用这个表来执行查询演示: 插入几条数据 查询json对象指定属性值的数据 1、函数

    2024年02月13日
    浏览(36)
  • mysql 5.7 json 类型 json 数组类型 普通字符串类型 10w数据 查询速度差异

    建表语句ddl 10w 数据 插入 存储过程  json 类型 vs 普通字符串类型 建表语句ddl CREATE TABLE tb_json_array_test ( id INT NOT NULL AUTO_INCREMENT, user_no VARCHAR(100), user_name VARCHAR(100), score INT, create_time date, update_time date, remark VARCHAR(100), field1 VARCHAR(100), field2 VARCHAR(100), field3 VARCHAR(100), field4 VARCHAR(

    2024年02月04日
    浏览(38)
  • vue3中使用ForEach报错Uncaught TypeError: xxxx.forEach is not a function

    在vue3页面中想要遍历在data中定义的数组,没有做JSON数据处理,然后用forEach方法就一直报错......网上查找了很多相关错误,有些是说命名敏感,还有数据没做JSON转化,或是要用异步处理.......试了各种方法发现都不能解决。不过从下面报错可以看出就是我的数组类型不符合

    2024年02月11日
    浏览(39)
  • Postgresql JSON对象和数组查询

    1.1 简单查询(缺陷:数组必须指定下标,不推荐) 1.1.1 模糊查询 address字段是JSONArray类型,所以在路径中,使用数字索引来访问数组元素,从 0 开始计数。 1.1.2 等值匹配 如果字段是 int 类型,后面需要添加 ::int 1.1.3 时间搜索 1.1.4 在列表 1.1.5 包含 # :获取在指定路径的 JSON 对象

    2024年02月10日
    浏览(44)
  • 微信小程序报错[ app.json.json 文件错误] app.json: app.json

    我在编写微信小程序的时候报错 我在网上百度错误的原因,说我的目录里面的 但是我添加上这个代码还是会报错,后来我仔细排查,原来是我的app.json的代码又问题,问题出在   后来我把代码改为这样就不报错了 、就是把debug那行代码去掉。发在这里希望同样有问题的小伙

    2024年02月11日
    浏览(34)
  • 关于数据库json 字段的查询

    1、查询json字符串中是否包含某个节点 2、查询json字符串中某个节点等于或者不等于某个值 需要注意的点json串和json数组匹配方式不同 json数组匹配  $[*].name  或者 $[0].name json串 $.name 这里发现一个总结的很好的博主,推荐一下 mysql中json_extract的使用方法_-王尚可-的博客-CSDN博

    2024年02月16日
    浏览(51)
  • PostgreSQL 查询json/jsonb是否存在某个片段

    在PostgreSQL中,jsonb有额外的操作符,如 @、@、?、?|、? 可以用来查询是否包含路径/值,以及顶层键值是否存在。 详细文章:PostgreSQL 操作json/jsonb 那么,如果我们不知道路径,只想要查询json/jsonb是否存在某个片段,那就跟我一起来学习吧! 思路:使用 ::text 将json/jsonb转换成为

    2024年02月15日
    浏览(28)
  • 【MySQL】MySQL 8 的 JSON 新特性详解(1)JSON 数据类型

    你好,我是小雨青年,一名使用MySQL 8 的程序员。 MySQL 8 引入了对 JSON 数据类型的全面支持,并提供了一组内置函数以有效处理 JSON 数据。MySQL 8 中的 JSON 支持的一些关键特性如下: JSON 数据类型:MySQL 8 拥有一个名为 JSON 的新数据类型,可用于在列中存储 JSON 数据。该数据类

    2024年02月02日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包