2

行が MySQL テーブルに挿入されたときに C++ プログラムを実行する MySQL トリガーを作成したいと考えています。これを行うために、UDF として正常にインストールされた LIB_MYSQLUDF_SYS を使用しています。私のコードはこのチュートリアルに基づいています。

これが私のトリガーコードです:

DELIMITER @@
CREATE TRIGGER startSimulator 
BEFORE INSERT ON `trigger`
FOR EACH ROW 
BEGIN
 DECLARE cmd CHAR(255);
 DECLARE result int(10);
 SET cmd=CONCAT('/home/lab/Dropbox/simulator/version_unified/./simulator');
 SET result = sys_exec(cmd);
END;
@@
DELIMITER ;

不明な場合は、 を使用してシステム プログラムを実行し./simulatorます。ただし、INSERT INTO trigger (trigger) VALUES (yes)「トリガー」テーブルに行を挿入すると、次のエラーが発生します。

#2013 - Lost connection to MySQL server during query

トリガーを削除すると、クエリは正常に実行されます。なぜこれが起こるのか誰にも考えがありますか?

mysqld --log-warnings=2収量:

130719 15:53:59 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130719 15:53:59 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130719 15:53:59 InnoDB: The InnoDB memory heap is disabled
130719 15:53:59 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130719 15:53:59 InnoDB: Compressed tables use zlib 1.2.3.4
130719 15:53:59 InnoDB: Initializing buffer pool, size = 128.0M
130719 15:53:59 InnoDB: Completed initialization of buffer pool
130719 15:53:59  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
4

0 に答える 0