56

phpmyadmin を使用して、mysql データベースに次の簡単なテスト イベントを追加しました。

CREATE DEFINER=`root`@`localhost` EVENT `my_event` 
ON SCHEDULE EVERY 1 MINUTE STARTS '2013-05-27 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE DO 
BEGIN
    UPDATE `test` SET `name`="z";
END

私の環境はmac+MAMP Proです。「test」テーブルの「z」という名前のすべての行を 1 分以内に変更する予定です。しかし、そうはなりません。

イベントを機能させるには何か追加する必要がありますか?

「SHOW PROCESSLIST」の出力: ここに画像の説明を入力

ありがとう。

4

9 に答える 9

136

イベントは、デフォルトでは開始されないスケジューラーによって実行されます。SHOW PROCESSLIST起動しているかどうかを確認するために使用することができます。そうでない場合は、コマンドを実行します

 SET GLOBAL event_scheduler = ON;

それを実行します。

于 2013-05-27T07:29:48.000 に答える
13

起動時にデフォルトで有効にする方法を知りたい場合は、構成ファイル (my.ini、my.cnf) に次を追加してください。

#Event scheduler can be set to 1 (On), 0 (Off), or Disabled
event_scheduler=1

この場合、サービスの再起動が必要になるため、中断を最小限に抑えたい場合は、これを構成ファイルに追加してから、SQL を実行します。

SET GLOBAL event_scheduler = ON;

そうすれば、現在のプロセスに対して実行され、サーバーが再起動されても引き続き機能します。

event_scheduler が無効に設定されている場合、これは機能しないことに注意してください。その場合、唯一のオプションはサービスを再起動することです。

于 2016-10-17T14:47:38.497 に答える