【问题标题】:trigger and procedure issue in mySQLmySQL 中的触发器和过程问题
【发布时间】:2012-04-08 10:15:53
【问题描述】:

当系统向我的一个数据库表插入新记录时,我想运行一个特定的脚本(名为 proc.php 文件,见下文)。(我读到我需要这个 UDF 库,我已经安装了它我的服务器,它工作正常)

为此我写了一个触发器和一个过程

触发码:

DELIMITER $$

USE `db_name`$$

DROP TRIGGER /*!50032 IF EXISTS */ `trigger`$$

CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER `trigger` AFTER INSERT ON `billing` 
FOR EACH ROW 
BEGIN
    CALL `db_name`.`udf_proc`(NEW.user_id);
END;
$$

DELIMITER ;

程序代码:

DELIMITER $$

CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `db_name`.`udf_proc`(userId INT)
BEGIN
    DECLARE cmd CHAR(255);
    DECLARE result CHAR(255);

    SET cmd = CONCAT('php -f "/var/www/html/proj/proc.php" ',userId);
    SET result = sys_eval(cmd);
END$$

DELIMITER;

当我尝试手动插入新记录时,什么也没有发生,我不知道为什么

【问题讨论】:

    标签: php mysql triggers procedures


    【解决方案1】:

    您确定 MySQL 拥有/var/www/html/proj/proc.php 和运行 php 脚本的权限吗?

    你检查过 MySQL 日志吗?

    /var/logs/mysql.log
    /var/logs/mysql.err
    

    【讨论】:

    • 我看到一条错误消息“无法打开输入文件” /var/www/html.../proc.php123 我认为proc.php到123之间需要有一个空格?如何编辑触发器以添加该空间?
    • 删除DROP TRIGGER 的触发器并再创建一次:)
    • 我删除当前触发器,然后创建相同的触发器而不删除触发器行,在更改选项中我可以看到下拉命令 agian
    猜你喜欢
    • 1970-01-01
    • 2020-09-11
    • 2023-04-02
    • 2020-08-13
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多