Mysqlイベント(タイミングタスク)
3833 ワード
mysql作成タスク(イベント)
1、event_scheduler=NO表示SHOW VARIABLES LIKE‘event_scheduler’; 2、タスク(イベント)a、set global event_を開くscheduler=1; b、SET GLOBAL event_scheduler = ON; c、my.cnfの[mysqld]部分にevent_を追加scheduler=ONしてmysqlを再起動します.3、イベントSET GLOBAL eventを閉じるscheduler = OFF; 4、文法:
パラメータ詳細:DEFINER:イベント実行時に権限をチェックするユーザを定義します.ON SCHEDULE schedule:実行時間と時間間隔を定義します.ON COMPLETION[NOT]PRESERVE:イベントが1回実行されるか、永久実行されるかを定義し、デフォルトは1回実行、すなわちNOT PRESERVEである.ENABLE|DISABLE|DISABLE ON SLAVE:イベントが作成された後に開くか閉じるか、上から閉じるかを定義します.サーバからホスト上の作成イベントを自動的に同期させる文であれば、DISABLE ON SLAVEが自動的に加算されます.COMMENT‘comment’:イベントのコメントを定義します.5、イベントを開くalter event event_name(イベント名)ON COMPLETION PRESERVE ENABLE;6、イベントalter event event_を閉じるname(イベント名)ON COMPLETION PRESERVE DISABLE;7、削除イベントDROP EVENT[IF EXISTS]event_name(イベント名)8、ケース
9、イベントの権限の問題について(Access denied for user'root'@'%'to database'xxxx')Naicat Premiumリモート接続のmysqlを使用して新しいデータベースと新しいユーザーを作成した後、そのユーザーにこの新しいデータベース権限を追加すると、access denied for user'root'@'%'to database xxxxxのプロンプトが表示されます.エラーの原因はrootユーザーがリモートで接続していることです.受信したMYSQLには、この新しいデータベースの許可はありません.mysqlをローカルで使用する場合、この問題は存在しないはずです.解決方法:
xxxxは作成されたデータベースであり、passwordはrootのパスワードである.実際の要求通りに変更してください.
10、サイクルまたはポイントシンタックスon schedule every 1 secondを1秒ごとに実行
10日後にon schedule at current_を実行timestamp + interval 10 day
指定日時実行on schedule at timestamp‘2016-08-16 00:00:00’
毎日午前3時にon schedule every 1 daystarts‘2016-05-18 03:00:00’を実行(翌日午前3時から設定)
毎日定時に実行し、5日後にon schedule every 1 dayends current_の実行を停止します.timestamp + interval 5 day
5日後に毎日定時クリアtestテーブルを開き、1ヶ月後にon schedule every 1 daystarts current_の実行を停止します.timestamp + interval 5 dayends current_timestamp + interval 1 month
1、event_scheduler=NO表示SHOW VARIABLES LIKE‘event_scheduler’; 2、タスク(イベント)a、set global event_を開くscheduler=1; b、SET GLOBAL event_scheduler = ON; c、my.cnfの[mysqld]部分にevent_を追加scheduler=ONしてmysqlを再起動します.3、イベントSET GLOBAL eventを閉じるscheduler = OFF; 4、文法:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body;
schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR |
DAY_MINUTE |DAY_SECOND | HOUR_MINUTE |
HOUR_SECOND | MINUTE_SECOND}
パラメータ詳細:DEFINER:イベント実行時に権限をチェックするユーザを定義します.ON SCHEDULE schedule:実行時間と時間間隔を定義します.ON COMPLETION[NOT]PRESERVE:イベントが1回実行されるか、永久実行されるかを定義し、デフォルトは1回実行、すなわちNOT PRESERVEである.ENABLE|DISABLE|DISABLE ON SLAVE:イベントが作成された後に開くか閉じるか、上から閉じるかを定義します.サーバからホスト上の作成イベントを自動的に同期させる文であれば、DISABLE ON SLAVEが自動的に加算されます.COMMENT‘comment’:イベントのコメントを定義します.5、イベントを開くalter event event_name(イベント名)ON COMPLETION PRESERVE ENABLE;6、イベントalter event event_を閉じるname(イベント名)ON COMPLETION PRESERVE DISABLE;7、削除イベントDROP EVENT[IF EXISTS]event_name(イベント名)8、ケース
:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`t1` datetime DEFAULT NULL,
`id2` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8
CREATE EVENT IF NOT EXISTS e_test_1 ON SCHEDULE EVERY 3 SECOND
ON COMPLETION PRESERVE
DO INSERT INTO test(id,t1) VALUES(NULL,NOW());
CREATE EVENT IF NOT EXISTS e_test_2
ON SCHEDULE
AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO TRUNCATE TABLE test;
1、
CREATE PROCEDURE pro_test()
BEGIN
INSERT INTO test(id,t1,id2) VALUES(NULL,NOW(),'1000000');
END
2、
CREATE EVENT IF NOT EXISTS e_test_3 ON SCHEDULE EVERY 3 SECOND
ON COMPLETION PRESERVE
DO CALL pro_test();
#
CREATE DEFINER=`root`@`%` EVENT `e_create_partition` ON SCHEDULE EVERY 1 MINUTE
STARTS '2019-07-17 19:50:00' ENDS '2019-07-17 19:55:00'
ON COMPLETION PRESERVE DISABLE DO CALL proc_create_partition_all()
9、イベントの権限の問題について(Access denied for user'root'@'%'to database'xxxx')Naicat Premiumリモート接続のmysqlを使用して新しいデータベースと新しいユーザーを作成した後、そのユーザーにこの新しいデータベース権限を追加すると、access denied for user'root'@'%'to database xxxxxのプロンプトが表示されます.エラーの原因はrootユーザーがリモートで接続していることです.受信したMYSQLには、この新しいデータベースの許可はありません.mysqlをローカルで使用する場合、この問題は存在しないはずです.解決方法:
UPDATE mysql.user SET Event_priv = 'Y' WHERE HOST='%' AND USER='root';
FLUSH PRIVILEGES;
grant all PRIVILEGES on xxxx.* to root@'%' identified by 'password' with grant option;
grant all on xxxx.* to 'root'@'%' identified by 'password' with grant option;
xxxxは作成されたデータベースであり、passwordはrootのパスワードである.実際の要求通りに変更してください.
10、サイクルまたはポイントシンタックスon schedule every 1 secondを1秒ごとに実行
10日後にon schedule at current_を実行timestamp + interval 10 day
指定日時実行on schedule at timestamp‘2016-08-16 00:00:00’
毎日午前3時にon schedule every 1 daystarts‘2016-05-18 03:00:00’を実行(翌日午前3時から設定)
毎日定時に実行し、5日後にon schedule every 1 dayends current_の実行を停止します.timestamp + interval 5 day
5日後に毎日定時クリアtestテーブルを開き、1ヶ月後にon schedule every 1 daystarts current_の実行を停止します.timestamp + interval 5 dayends current_timestamp + interval 1 month