在MYSQL中,通过CREATE FUNCTION命令可以调用不同的.so共享库文件.在编译前需要加上选项:--with-mysqld-ldflags=-rdynamic重新编译的时候出了点小问题,可能是升级系统时丢失了……configure: error: No curses/termcap library found解决方法:sudo apt-get install libncurses5-dev 之后重新configure通过。在sql文件夹下有一个实例程序udf_example.c文件。可以对该文件进行单独编译,生成共享库文件:gcc -shared -o udf_example.so udf_example.cc -I /usr/local/mysql/include/mysql 在sql文件夹下,文件udf_example.def给出了函数清单:LIBRARY udf_exampleVERSION 1.0EXPORTSlookuplookup_initreverse_lookupreverse_lookup_initmetaphon_initmetaphon_deinitmetaphonmyfunc_double_initmyfunc_doublemyfunc_int_initmyfunc_intsequence_initsequence_deinitsequenceavgcost_initavgcost_deinitavgcost_resetavgcost_addavgcost_clearavgcostis_constis_const_initcheck_const_lencheck_const_len_init其中:xx_init表示加载函数,xx_deinit表示卸载函数,分别对应create function 和drop functionxx_clear:重置或归零相关值xx_add:和xx_clear一起用于group by这样的需要分组的情形。 修改配置文件my.cnf在mysqld中增加行:plugin_dir = /usr/local/mysql/lib/plugin,所有的共享库文件都被存储在这个文件夹中我们将udf_example.so文件cp到该文件夹中,然后打开服务器,执行:mysql> create function metaphon returns string soname "udf_example.so";报错:ERROR 1127 (HY000): Can"t find symbol "metaphon" in library 共享库文件位置正确,权限也没啥问题,百思不的其解,网上找了很多,也没找到正确的解答,寻思可能是编译UDF源文件出错,经过多次尝试,以如下格式编译,调用成功:make udf_example.ogcc -Wall -shared -DMYSQL_DYNAMIC_PLUGIN udf_example.o -o udf_example.so然后将udf_example.so拷贝到/usr/local/mysql/lib/plugin文件夹下,执行成功:mysql> create function metaphon returns string soname "udf_example.so";Query OK, 0 rows affected (0.00 sec)MySQL C API单机环境下安装多个MySQL服务器相关资讯 MySQL基础教程
- MySQL基础教程:关于varchar(N) (01月22日)
- MySQL SELECT同时UPDATE同一张表 (02/19/2013 07:20:18)
- Linux修改MySQL最大并发连接数 (02/15/2013 15:37:21)
| - 高性能MySQL(第3版) 中文PDF带目 (10/26/2014 10:03:50)
- 如何在MySQL中的获取IP地址的网段 (02/18/2013 12:23:33)
- C++和C#访问MySQL的简单代码示例 (12/21/2012 09:04:10)
|
本文评论 查看全部评论 (0)