この質問が何度も寄せられていることは知っていますが、一般的に受け入れられている回答は役に立ちませんでした。しかし、偶然、私は答えに出くわしました。
セットアップは次のとおりです。接続を介して大量のクエリ(主にCREATE TABLE)が発生しました。しかし、CREATE TRIGGER は 2014 年の恐ろしいエラーを出し続けました。これは、プログラム内の唯一のコマンドであっても発生したため、開いているカーソルとは何の関係もありませんでした。たとえば、これは失敗しました。
<?php
$db = new PDO ($cnstring, $user, $pwd);
$db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute (PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute (PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
$st = $db->query ("CREATE TRIGGER `CirclesClosureSync` AFTER INSERT ON Circles
FOR EACH ROW BEGIN
INSERT INTO CirclesClosure (ancestor, descendant)
SELECT ancestor, NEW.ID from CirclesClosure WHERE descendant=NEW.Parent;
INSERT INTO CirclesClosure (ancestor, descendant) values (NEW.ID, NEW.ID);
END;");
$st->closeCursor();
?>
これは、ストアド プロシージャの作成に関する他の問題と似ているように思われました。
これはphp 5.4.5、MySql 5.5、Windows XPです(ただし、他のウィンドウでも失敗しました)