PHPコードによって開始されたときに機能しない次のクエリがあります。
$sql = 'START TRANSACTION;
DELETE FROM task_actions
WHERE task_id='.$id.';
DELETE FROM tasks
WHERE id='.$id.';
COMMIT;
';
echo $sql
出力を直接phpMyAdminに入れると、問題なく動作します。そして、1 つのトランザクションではなく 2 つのステップで実行したところ、私の PHP コードからも機能しました。
私は最初、MySQL がトランザクションを許可しないのではないかと考えましたが、stackoverflow.com /questions/2050310とstackoverflow.com/questions/2960012はそれが間違っていることを示しました。
自動コミットを無効にし、クエリを実行して自動コミットを再アクティブ化できることがわかりました(stackoverflow.com/a/17607619およびstackoverflow.com/a/12092151)が、そうしないことをお勧めします。
なぜうまくいかないのでしょうか?