0

システムが新しいレコードを 1 つの db テーブルに挿入するときに、特定のスクリプト (名前付きの 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;

新しいレコードを手動で挿入しようとしても何も起こらず、その理由がわかりません

4

1 に答える 1

0

MySQL が/var/www/html/proj/proc.phpphp スクリプトを実行するための権限を持っていることは確かですか?

MySQL ログを確認しましたか?

/var/logs/mysql.log
/var/logs/mysql.err
于 2012-04-08T10:24:48.923 に答える