2012-04-08 10 views
0

システムが新しいレコードを1つのdbテーブルに挿入するときに、特定のスクリプト(名前はproc.phpファイルを参照)を実行したいと思います。 、私はすでに私のサーバー上でこれをインストールし、このためにmySQLのトリガーとプロシージャの問題

iが引き金と手順を書いた)正常に動作し、それは `s

トリガーコード:

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スクリプトを実行するための権限を持っていることを、一定している理由?私は知っている `tを

MySQLログを確認しましたか?私は、エラーメッセージ「をオープンできませんでした入力ファイル」 /var/www/html.../proc.php123 を見た

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

私は123にproc.phpの間にスペースがあることが必要だと思いますか? トリガーを編集してそのスペースを追加するにはどうすればよいですか? –

+0

'DROP TRIGGER'でトリガを削除してもう一度作成してください:) –

+0

私は現在のトリガを落としてから、ドロップトリガラインを使って同じトリガを作成します。変更オプションでは、ドロップダウンコマンドagian –