Windowsでxamppにバンドルされているmysql 5.1.41を実行しています。テスト目的で「イベント」を作成しましたが、問題はイベントが実行されないことです。スケジューラーは ONです。id (自動インクリメント) と test_value (タイムスタンプ、デフォルト null) の 2 つの列を持つ test_table という名前のテーブルを作成しました。この列は、イベントが発生するたびに現在のタイムスタンプを格納することになっています。だから私はこの目的のためにイベントを作成しました。しかし、問題は、実行されないことです。多くのデータベース パラメータをチェックし、さまざまなフォーラムで解決策を探しましたが、役に立ちませんでした。
私の手順は次のとおりです。
ステップ 1. Test_Table 作成ステートメント
CREATE TABLE IF NOT EXISTS `test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test_value` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
ステップ 2. 次のステートメントを実行して、スケジューラーをオンにします。
set global event_scheduler=on
ステップ 3. Event_scheduler のステータスを確認する
show processlist
ステップ 4. 現在時刻を挿入するテスト関数 (ルーチン) を作成する
DROP FUNCTION `test_func`//
CREATE DEFINER=`pacs`@`localhost` FUNCTION `test_func`(`x` int) RETURNS int(11)
BEGIN
#Routine body goes here...
INSERT into test_table(test_value) VALUE(CURRENT_TIMESTAMP);
RETURN 0;
END
ステップ 5. SQL ステートメントから関数を実行すると、正常に機能しました。
ステップ 6. 30 秒ごとに Test_func を呼び出すテスト イベントを作成しました。
DROP EVENT `test_event`//
CREATE EVENT `test_event` ON SCHEDULE EVERY 30 SECOND
STARTS '2018-02-24 22:50:00' ON COMPLETION PRESERVE ENABLE
DO call test_func(1)
ステップ 7. mysql スキーマのイベント テーブルを確認したところ、last_executed 列によると、UTC に従って実行されましたが、test_table はデータを取得していないことがわかりました。
ステップ 8. 解決策と支援を探す
よろしく。