解決儲存過程報錯返回資訊
阿新 • • 發佈:2019-02-12
作為一名維護過儲存過程的開發人員,被儲存過程的問題定位折磨那是常事。
下面總結一個幫助定位的方法。
儲存過程sp中添加了回滾程式碼
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
這樣報錯資料會回滾,但是錯誤資訊卻不能返回,導致定位困難。
mysql提供了一種方式獲取返回的錯誤資訊,新增如下程式碼即可
GET DIAGNOSTICS CONDITION 1 @p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT, @p3 = MYSQL_ERRNO, @p4 = CONSTRAINT_CATALOG, @p5 = CONSTRAINT_SCHEMA , @p6 = CONSTRAINT_NAME, @p7 = CATALOG_NAME, @p8 = SCHEMA_NAME, @p9 = TABLE_NAME, @p10 = COLUMN_NAME, @p11 = CURSOR_NAME; insert into ccm_log (create_time,log_info1,log_info2,log_info3,log_info4,log_info5,log_info6,log_info7,log_info8,log_info9,ccm_logcol) values(now(),@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10);
其中ccm_log是自己定義的一個表格,主要是和上面返回的錯誤資訊進行記錄。