mysql如何在存儲(chǔ)過(guò)程中輸出日志信息
mysql在存儲(chǔ)過(guò)程中輸出日志信息
直接用select 打印輸出
SELECT 'Comment';
用concat連接變量輸出
declare myvar INT default 0; SET myvar = 5; SELECT concat('myvar is ', myvar);
輸出:
myvar is 5
格外創(chuàng)建一個(gè)有一列文本列的表,然后往里面塞信息
declare myvar INT default 0; SET myvar = 5; insert into tmptable select concat('myvar is ', myvar);
將上面的sql語(yǔ)句封裝成一個(gè)存儲(chǔ)過(guò)程log,以后要用的話就直接調(diào)用下面的語(yǔ)句就可以了
CALL log(concat('the value is', myvar));
直接輸出到一個(gè)文本里面
select "penguin" as log into outfile '/tmp/result.txt';
這個(gè)命令會(huì)有嚴(yán)格的限制,只能將輸出文本放在本地,然后給予其創(chuàng)建和寫的權(quán)限
一旦輸出了一個(gè)文本,無(wú)法重寫,這樣可以阻止惡意執(zhí)行sql注入
mysql存儲(chǔ)過(guò)程中錯(cuò)誤日志記錄實(shí)現(xiàn)
根據(jù)官方提供的信息,及查閱多個(gè)博客綜合,且自己在環(huán)境中試驗(yàn)并驗(yàn)證方案可行。
接下來(lái)進(jìn)入正題,我會(huì)盡力寫的更通俗易懂一些。
第一步
建一張日志表,具體字段可以根據(jù)需求來(lái)設(shè)計(jì),下圖是我的參考
以上字段按順序分別是ID,存儲(chǔ)過(guò)程名稱,錯(cuò)誤代碼,錯(cuò)誤描述,插入時(shí)間,間隔時(shí)間。
第二步
在存儲(chǔ)過(guò)程中添加以上字段的變量
-- 日志記錄參數(shù) DECLARE v_id VARCHAR(50);-- 日志表ID DECLARE v_name VARCHAR(50) DEFAULT 'PROC_IMPORTNEWCONTRACT_REAL'; -- 過(guò)程名稱 DECLARE v_code VARCHAR(10) DEFAULT '00000';-- 錯(cuò)誤碼 DECLARE v_msg_text TEXT DEFAULT 'SUCCESS';-- 返回消息默認(rèn)為SUCCESS DECLARE v_date DATETIME DEFAULT NOW();-- 插入時(shí)間默認(rèn)當(dāng)前時(shí)間 DECLARE v_invatime DATETIME DEFAULT NOW();-- 間隔時(shí)間默認(rèn)當(dāng)前時(shí)間
以上代碼是放在BEGIN下面的
最后一步、事務(wù)提交與日志記錄
以上代碼是放在BEGIN END的END前面的,其中間的邏輯代碼無(wú)需改變,如果你有特殊需求可以再改造。
參考資料:
上述的CONTINUE意思為sql發(fā)生異常時(shí),為保證存儲(chǔ)過(guò)程繼續(xù)往下執(zhí)行,執(zhí)行ROLLBACK,進(jìn)而執(zhí)行日志記錄的操作。
如果將CONTINUE改為EXIT,則意為產(chǎn)生異常時(shí),該存儲(chǔ)過(guò)程會(huì)退出,無(wú)法執(zhí)行日志記錄的操作,因?yàn)樵摯鎯?chǔ)過(guò)程直接退出了。
RETURNED_SQLSTATE,返回報(bào)錯(cuò)代碼,MESSAGE_TEXT返回報(bào)錯(cuò)具體信息,官方提供的信息里面是上面的寫法。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何利用Xtrabackup進(jìn)行mysql增量備份
這篇文章主要為大家介紹了如何利用Xtrabackup進(jìn)行mysql增量備份詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10SQL實(shí)現(xiàn)LeetCode(176.第二高薪水)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(176.第二高薪水),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08MySQL的Redo Log數(shù)據(jù)恢復(fù)核心機(jī)制面試精講
這篇文章主要為大家介紹了MySQL的Redo Log數(shù)據(jù)恢復(fù)核心機(jī)制面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10