Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao lịch sự kiện mysql không hoạt động trong localhost cơ sở dữ liệu?

Hãy xem xét những điều sau đây.

Phát hành một select CURRENT_TIMESTAMP; hoặc

select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;

Nói cách khác, thực hiện một số điều tra lại. Sự kiện âm thầm thành công hoặc thất bại vì chúng không có giao diện người dùng.

Chạy một số lệnh như:

show variables where variable_name='event_scheduler';

- hiện đang TẮT (hoặc có thể BẬT)

Chỉ định thời gian bắt đầu cho sự kiện của bạn trong quá trình tạo và chỉ định ON COMPLETION PRESERVE chẳng hạn như

drop event if exists `Every_5_Minutes_QuestionUpdateImport`;
DELIMITER $$
CREATE EVENT `Every_5_Minutes_QuestionUpdateImport`
  ON SCHEDULE EVERY 5 MINUTE STARTS '2015-09-01 00:00:00'
  ON COMPLETION PRESERVE
DO BEGIN
    --
    -- all your statements go here
    -- 
END$$
DELIMITER ;

Bật trình xử lý sự kiện:

SET GLOBAL event_scheduler = ON;  -- turn her on and confirm below

Xác nhận nó:

show variables where variable_name='event_scheduler';

Kiểm tra trạng thái của tất cả các sự kiện trong một cơ sở dữ liệu cụ thể theo tên cơ sở dữ liệu:

show events from stackoverflow; -- note stackoverflow is my database name 

Tắt hoặc bật một sự kiện nhất định theo tên trong db đã chọn hiện tại:

ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;

Và cuối cùng nhưng không kém phần quan trọng, khi tôi viết Sự kiện mới, tôi luôn thêm ban đầu trong các câu lệnh sự kiện để ghi vào bảng nhật ký (với câu lệnh chèn và ngày giờ là now() ). Bằng cách đó, tôi biết nó đã được kích hoạt và dữ liệu trong mệnh đề where như mệnh đề của bạn có lẽ không khiến tôi đọc nhầm về toàn bộ vấn đề.

Và tôi có nghĩa là tôi phát điên khắp nơi. Ban đầu, sau đó tôi sửa lại sau:

    set filename:=concat('c:\\datavault\\stackoverflow\\app01\\batches\\processMe_',LPAD(@idToPerform, 8, '0'),'.txt');
    set logMsg:=concat("It would appear I am to process this thing: ",filename);

    insert EvtsLog(incarnationId,evtName,step,debugMsg,dtWhenLogged)
    select incarnationId,evtAlias,10,logMsg,now(); -- 10: some step somewhere in the middle

Hãy nhớ cho tất cả các mục đích thực tế (ngoại trừ có thể bảng của bạn mà bạn thực sự quan tâm từ câu hỏi của bạn) ... rằng EvtsLog của tôi là giao diện người dùng duy nhất của bạn với tư cách là người lập trình Sự kiện và là người bạn tốt nhất của bạn.

Xem trang hướng dẫn để biết điều gì VỀ BẢO QUẢN HOÀN THÀNH cũng như những thứ khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để các danh mục và danh mục con cho WooCommerce được lưu trong DB?

  2. làm thế nào chúng ta có thể thay đổi giá trị bằng cách sử dụng các nút radio

  3. Bỏ qua tiêu chí WHERE cụ thể

  4. Nối một trường liên quan đến nhiều hàng của một bản ghi trong bộ truy vấn trong Django

  5. Mệnh đề Where để lọc hàng trong MySQL