mysql5.7+的版本已经内部支持json,然后很多生产环境的mysql还是5.7以下的版本,但需求中要使用JSON,又不想升级mysql版本,毕竟运行稳定的系统没有必要承担升级风险。那如何在5.7以下的版本中使用json呢,下面介绍加入lib_mysqludf_json的方法。
1.安装mysqlClinet-dev
如果系统中没有安装libmysqlclient-dev,编译时会找不到mysql_config文件。
先安装libmysqlclient-dev:
(1)ubuntu64bit:apt-get install libmysqld-dev libmysqlclient-dev
(2)CentOS64bit:yum install mysql-devel
2.安装MySql-Json-Udf
(1)获取MySql-Json-Udf,下载地址:
(2)上传到服务器后,解压文件,并完成编译
unzip lib_mysqludf_json-master.zip
cd lib_mysqludf_json-master
mv lib_mysqludf_json.so lib_mysqludf_json.so_bak
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
(3)将lib_mysqludf_json.so复制到mysql的plugin目录下。
在mysql 里查看安装目录可以用: whereis mysql
cp lib_mysqludf_json.so /usr/lib/mysql/plugin/
(4)配置MySql,创建json-udf函数
create function lib_mysqludf_json_info returns string soname 'lib_mysqludf_json.so';
create function json_array returns string soname 'lib_mysqludf_json.so';
create function json_members returns string soname 'lib_mysqludf_json.so';
create function json_object returns string soname 'lib_mysqludf_json.so';
create function json_values returns string soname 'lib_mysqludf_json.so';
(5)验证
create database test;
use test;
create table `users`(
`uid` int(11) unsigned,
`username` varchar(40) NOT NULL,
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`uid`)
);
insert into `users` values(1,'lisi',null);
select json_array(uid,username,addtime) as u from users;
select json_array(uid,json_array(username),addtime) as u from users;