2016-10-03 5 views
0

を開始していないと私は、次のMySQLのイベントがあります。MySQLのイベントは、私がローカルホストからMySQLを使用してい

DELIMITER $$ 
ALTER DEFINER=`root`@`localhost` EVENT `UpdateEstatusCorreo` 
ON SCHEDULE EVERY 1 MINUTE STARTS '2016-10-05 07:30:00' 
ON COMPLETION NOT PRESERVE ENABLE COMMENT 'Actualizar status a 0 (false) para enviar el correo nuevamente' 
DO UPDATE email SET Enviado = 0$ 
DELIMITER ; 

[OK]を、私は、MySQLのイベントは、10月5日に開始するはずだということを知っているが、私は私のPCの日時を変更します私はMySQLのクエリselect now()を実行し、予想される日付(2016-10-05 07:29:00)を取得しますが、07:30以降にテーブルをリフレッシュしても何も起こらないので、mysqlイベントを有効にします:

SET GLOBAL event_scheduler = ON;

そしてSHOW PROCESSLISTでこれは私が得るものです:

Processlist

私が間違ってやっていますか?どうすれば解決できますか?

+0

区切り文字は$$ではありません。また、私の答えをここでチェックしてください:http://stackoverflow.com/a/37901661。私はまた、あなたの更新stmt – Drew

+1

の後に開始と終了ブロックとセミコロンもお勧めしますあなたのシステム日付を正しいdatetimeに戻してください。そして、あなたのイベントは10-01をオフにして、その前進のことではなく、時計をつぶってください。 – Drew

+0

@Drew私はphpmyadminでイベントを作成します。 SQLyogからのクエリ、しかし、イベントが最終的に私はなぜ、どのようにわからないのですか –

答えて

0

イベントスケジューラは、システムクロックに座ったり、時計を見たりしません。イベントが発生するまでにどれくらい待つ必要があるかをチェックし、待機します。この方法をテストすると、システム時刻を変更することで、MySQLサーバデーモン(またはサービス)を停止して起動しない限り()、は実行されません。 MySQLはシステムクロックが安定することを期待しており、そのように調整することで少し不安定にすることができます。それは本当に避けたほうがいいです...しかしまた不要です。

STARTSは過去に設定することができますが、あなたが選択した過去の任意の時間からはまだEVERY 1 MINUTEが発生します。 STARTSの秒数が00の場合、イベントが発生してから時計が00になるとすぐに実行されます。それ以降は毎分。

実行中のイベントはプロセスリストに独自のスレッドが表示されます(実行をキャッチしたい場合は、イベント本体の中にDO SLEEP(5);のような短い睡眠を追加します)。しかし、 dはイベント本体の周囲にBEGIN/ENDが必要です)、それらのエラーは標準のMySQL Serverエラーログに記録されます。

イベントの最後の迷惑メール$もエラーのように見えますが、エラーログにはこれが表示され、それにもかかわらずイベントが作成されるはずです。

関連する問題