用mySQL触发器调用外部脚本在ubuntu ARMHF上WHITOUT sys_exec

我需要从触发器中调用外部脚本来拦截数据库中的每个插入。 这是因为我不能轮询这个值,我正在编写一个ARM体系结构的embedded式系统,只有250MB的RAM。 触发器是正确的选项,并且触发器的代码工作正常,我得到:

FUNCTION mydb.sys_exec does not exist (MySQL error code: 1305, SQLState: 42000 ) 

所以我试图安装这个: https : //github.com/mysqludf/lib_mysqludf_sys

但它让我:

 ERROR: You need libmysqlclient development software installed to be able to compile this UDF, on Debian/Ubuntu just run: apt-get install libmysqlclient15-dev 

所以如果我input

 sudo apt-get install libmysqlclient15-dev 

我得到:请注意,select“libmysqlclient-dev”而不是“libmysqlclient15-dev”

当然这不是正确的包,因为它不工作。 包含在git中的.so文件是为intelx86编译的。

任何人有一个想法? 在git中编译.c是很不可能的,因为缺less依赖关系。

或者..我怎样才能执行外部脚本从一个触发器没有sys_exec?

PS:为了完整性,这是触发器脚本:

DELIMITER @@

 CREATE TRIGGER command_controller AFTER INSERT ON myDB.foo FOR EACH ROW BEGIN DECLARE cmd CHAR(255); DECLARE result int(10); SET cmd='./foo '; SET result = sys_eval(cmd); END; @@ DELIMITER ; 

Solutions Collecting From Web of "用mySQL触发器调用外部脚本在ubuntu ARMHF上WHITOUT sys_exec"

这是一个适合我的最小版本:

 #include <string.h> #include <stdlib.h> #include <mysql.h> my_bool sys_exec_init( UDF_INIT *initid , UDF_ARGS *args , char *message ){ unsigned int i=0; if(args->arg_count == 1 && args->arg_type[i]==STRING_RESULT){ return 0; } else { strcpy( message , "Expected exactly one string type parameter" ); return 1; } } void sys_exec_deinit( UDF_INIT *initid ){ } my_ulonglong sys_exec( UDF_INIT *initid , UDF_ARGS *args , char *is_null , char *error ){ return system(args->args[0]); } 

我用这一行编译它:

 gcc -Wall -I include -I /home/rbouman/mysql/mysql-5.6.10-linux-glibc2.5-x86_64/include -shared -fPIC -o sys_exec.so sys_exec.c