在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1682字,纯文字阅读大概需要3分钟。
内容图文
![在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec](/upload/InfoBanner/zyjiaocheng/888/871bc3964b8e4371912c5b129ee8b4a6.jpg)
我需要从触发器调用外部脚本来拦截数据库中的每个插入.
这是因为我不能轮询这个值,我正在编写一个带有ARM架构的嵌入式系统,只有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
所以,如果我输入
sudo apt-get install libmysqlclient15-dev
我明白了:
注意,选择’libmysqlclient-dev’而不是’libmysqlclient15-dev’
当然它不是正确的包装,因为它不起作用.
git中包含的.so文件是为intelx86编译的.
有人有想法吗?
在git中编译.c是非常不可能的,因为很多缺少依赖项.
或..如何在没有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 ;
解决方法:
这是一个适合我的最小版本:
#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
内容总结
以上是互联网集市为您收集整理的在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec全部内容,希望文章能够帮你解决在ubuntu ARMHF上使用mySQL触发器调用外部脚本WHITOUT sys_exec所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。