MySQL 8.4 發行說明
事件排程器會將因錯誤或警告而終止的事件執行資訊寫入 MySQL 伺服器的錯誤日誌。請參閱第 27.4.6 節,「事件排程器與 MySQL 權限」以取得範例。
若要取得事件排程器的狀態資訊以進行除錯和疑難排解,請執行mysqladmin debug (請參閱第 6.5.2 節,「mysqladmin — MySQL 伺服器管理程式」);執行此命令後,伺服器的錯誤日誌會包含與事件排程器相關的輸出,類似於此處顯示的內容
Events status:
LLA = Last Locked At LUA = Last Unlocked At
WOC = Waiting On Condition DL = Data Locked
Event scheduler status:
State : INITIALIZED
Thread id : 0
LLA : n/a:0
LUA : n/a:0
WOC : NO
Workers : 0
Executed : 0
Data locked: NO
Event queue status:
Element count : 0
Data locked : NO
Attempting lock : NO
LLA : init_queue:95
LUA : init_queue:103
WOC : NO
Next activation : never
在事件排程器執行的事件中發生的陳述式中,診斷訊息(不僅是錯誤,還有警告)會寫入錯誤日誌,以及在 Windows 上,寫入應用程式事件日誌。對於頻繁執行的事件,這可能會導致許多記錄訊息。例如,對於 SELECT ... INTO
陳述式,如果查詢未傳回任何資料列,則會發生錯誤代碼 1329 的警告 (var_list
No data
),且變數值保持不變。如果查詢傳回多個資料列,則會發生錯誤 1172 (Result consisted of more than one row
)。對於任一種情況,您都可以透過宣告條件處理常式來避免記錄警告;請參閱第 15.6.7.2 節,「DECLARE ... HANDLER 陳述式」。對於可能擷取多個資料列的陳述式,另一個策略是使用 LIMIT 1
將結果集限制為單一資料列。