我有一張表,需要成員每5天更新一次。如果該行的上一次更新早於5天,則事件調度程序將將任何陳舊行設置爲零。 我的開發環境是:我如何在PHP中創建重複的MySQL事件
Windows 7, 32bit.
MySQL 5.5.39
PHP 5.4.45
我的第一個查詢:
$query = 'CREATE EVENT event_name
ON SCHEDULE EVERY 5 HOUR
ON COMPLETION PRESERVE ENABLE
DO
UPDATE database_name.table_name SET table_column_name = 0 WHERE (CURRENT_TIMESTAMP - last_update_date) > 5 DAY'
我跑的腳本在PHP,但在瀏覽器乾脆停止。顯示「找不到服務器」。
然後我在phpMyAdmin中測試了它。這次我得到:
#1064 - 您的SQL語法錯誤。檢查與您的mysql服務器版本相對應的mysql手冊的正確語法,在'DAY'附近使用 。
我查看了MySQL參考手冊(對於版本5.6,雖然)。我的查詢似乎是正確的,除非我失去了一些東西。所以我把查詢改爲:
CREATE EVENT event_name
STARTS '2015-11-01 00:00:00'
ENDS '2030-11-01 00:00:00'
ON SCHEDULE EVERY 5 HOUR
ON COMPLETION PRESERVE ENABLE
DO
UPDATE database_name.table_name SET table_column_name = 0 WHERE (NOW() - last_update_date) > 5 DAY
還是得到了同樣的結果。 在參考相關主題((How to schedule a stored procedure in MySQL))時,我的php信息中沒有event_scheduler
。
請幫忙。
一個問題可能是,CURRENT_TIMESTAMP只返回時間值,它似乎LAST_UPDATE_DATE爲datetime,請不要介意一天unnecessary.YOu可能想'TIMESTAMPDIFF'功能 – Mihai
你說得對,LAST_UPDATE_DATE是DATETIME。 謝謝。我將查找如何將該函數應用於我的查詢。 –