Mysql错误#1305功能db.sys_exec不存在

时间:2014-06-26 14:58:21

标签: php mysql sql database triggers

我正在使用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) 帮助我。谢谢。

3 个答案:

答案 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)

  1. Git在已部署MySQL的计算机上克隆文件

    git clone https://github.com/mysqludf/lib_mysqludf_sys

  2. 在检出上述存储库的目录中执行以下命令:

gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -m64 -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

  1. 将文件lib_mysqludf_sys.so复制到/ usr / lib / mysql / plugin / 位置/ usr / lib / mysql / plugin /是要通过在mysql shell中运行以下命令来验证的位置

    SHOW VARIABLES where variable_name = 'plugin_dir';

  2. 现在终于在我的sql shell中创建了函数;

    CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';

  3. 使用mysql shell中的以下命令验证是否已创建函数。此命令还应返回包含sys_exec的行:

    select * from mysql.func;