- 这个语句的错误在于使用了错误的语法来查询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
版权归原作者 隔壁小白 所有, 如有侵权,请联系我们删除。
版权归原作者 隔壁小白 所有, 如有侵权,请联系我们删除。