2012-04-08 39 views
0

當系統向我的db表中插入新記錄時,我想運行一個特定的腳本(命名爲proc.php文件,見下文)(我讀到了我需要的UDF庫,我已經安裝了這個在我的服務器和它單曲正常工作)mySQL中的觸發器和過程問題

爲此,我寫了一個觸發器和程序

觸發代碼:

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; 

當我試圖手動插入新記錄什麼也沒有發生,我不`噸知道爲什麼

回答

0

你是肯定的,那MySQL有權限/var/www/html/proj/proc.php和運行PHP腳本?

您是否檢查過MySQL日誌?

/var/logs/mysql.log 
/var/logs/mysql.err 
+0

我看到一個錯誤信息「無法打開輸入文件」 /var/www/html.../proc.php123 我認爲有需要是proc.php到123之間的空間? 如何編輯觸發器以添加該空間? – 2012-04-08 12:06:54

+0

通過'DROP TRIGGER'去除觸發器,並創建一個更多的時間:) – 2012-04-08 12:31:07

+0

我放下當前的觸發器,然後創建相同的觸發器與出滴觸發線,在更改選項我可以看到下拉命令agian – 2012-04-08 14:13:51