我正在使用phpmyadmin。我在mysql中使用一个触发器,它在一个表中插入一些东西后调用一个php脚本。 我的触发器包含这个。
DECLARE result INT;
SET result=(select sys_exec('C:/xampp/php/php.exe C:/xampp/htdocs/mysite/hello.php'));
但是我在尝试向桌面插入内容时遇到了这个错误。
#1305 FUNCTION db.sys_exec does not exists
(我的数据库名称是db) 帮助我。谢谢。
答案 0 :(得分:1)
sys_exec
不是标准的mysql函数。它由外部UDF插件提供,必须单独安装:https://github.com/mysqludf/lib_mysqludf_sys#readme
答案 1 :(得分:0)
在Linux Ubuntu系统和其他一些发行版中,mysql服务器包中包含限制UDF功能的apparmor。
停止apparmor
sudo service apparmor stop
检查apparmor状态
sudo service apparmor status
即便如此,如果您收到相同的错误,请重新启动mysql服务
重启mysql
sudo service mysql restart
答案 2 :(得分:0)
Git在已部署MySQL的计算机上克隆文件
git clone https://github.com/mysqludf/lib_mysqludf_sys
在检出上述存储库的目录中执行以下命令:
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -m64 -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
将文件lib_mysqludf_sys.so复制到/ usr / lib / mysql / plugin / 位置/ usr / lib / mysql / plugin /是要通过在mysql shell中运行以下命令来验证的位置
SHOW VARIABLES where variable_name = 'plugin_dir';
现在终于在我的sql shell中创建了函数;
CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';
使用mysql shell中的以下命令验证是否已创建函数。此命令还应返回包含sys_exec的行:
select * from mysql.func;