这个语句的错误在于使用了错误的语法来查询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
重启MySQL服务。
确认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字段进行匹配。
在配置文件 添加 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 支持。
libmysql_json.so
文件是否存在于 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 支持。
--结束END--
本文标题: mysql 查询json报错 FUNCTION xxxx.JSON_EXTRACT does not exist
本文链接: https://lsjlt.com/news/394914.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0