mysql 預存程序錯誤調試記錄,mysql預存程序

來源:互聯網
上載者:User

mysql 預存程序錯誤調試記錄,mysql預存程序
mysql預存程序錯誤調試記錄


公司平台在mysql資料庫上運行,一些預存程序報錯,調試過程痛苦,記錄錯誤及解決辦法,供參考。

     調試環境:dbForge Studio for MySQL 6.1版本,試用版;

1、BIZ_GET_ORGAN_BY_CONDITION

     問題1:提示遞迴調用錯誤,遞迴次數太多;根據業務設定,最大255;

     SET@@max_sp_recursion_depth = 10;

     常見如亂碼造成導致條件失效,出現死迴圈;

 

     問題2:變數的內容是亂碼,資料庫內容是中文,urt-8

     declarevc_agency_type varchar(64) CHARACTER SET utf8;

     定義變數時,需設定字元集;

 

     問題3:預存程序參數傳遞中文,是亂碼;定義參數同上;

 

2、BIZ_QUERY_USER_BY_CONDITION

問題1:row_count()返回-1

select語句的返回值用FOUND_ROWS();row_count()一般是插入、修改、刪除的影響行數;

 

問題2:mysql關於整數的除法

declare page_count int;

set page_count = 15 / 10 ;結果自動四捨五入為 2;

改用下面的語句:set page_count =FLOOR(result_count / page_size);

 

3、C3_BIZ_DATA_LIMIT

問題1:遊標有記錄,但是取值為空白:遊標語句中的變數不能和欄位同名,且不要是關鍵字;

問題2:遊標取不到值;

     欄位名稱和變數名稱一定不能相同;如果必須相同,給表加上別名進行區別;

 

問題3:out參數不能傳值

     修改成inout類型,預存程序共有三種類型:in out inout;

問題4:right函數改成subStr函數;

 

4、BIZ_CHANGER_ORG_PARENT_ID

問題1:mysql沒有if not exists文法,所以需要取總數,然後在判斷行數量;

 

問題2:update不支援子查詢問題;

update sys_org set leaftype = 1where id = (

     selectorg_parent_id from sys_org where id = 變數

);

修改為:

update sys_org set leaftype = 1where id = (

 select org_parent_id from

(select* from sys_org WHERE id = vc_source_id ) a

);


mysql怎記錄預存程序的報錯資訊

幫你改了一下

DELIMITER $$

create procedure pplog.addUser()
begin
declare count1 int default 0;
if count1<1000000 then
set count1=count1+1;
insert into pplog.user_log_inf(infohash,filesize,userIp,start_time,end_time,download,total_visit,protocal)
values("3662HDSH",232,'10,23,351',"2010-04-15 10:13:04","2010-05-15 11:34:40",22,33,44);
else set count1=count1+10;
end if;
END$$

DELIMITER ;
 
為何Mysql會垃圾到連預存程序的單步調試功可以都沒有?

mySQL是一個比較成熟的中小型資料庫,使用者非常廣泛,其中也不乏知名的大公司。當然,每種東西都會有缺點,mysql也不例外,但是把它說成是垃圾,這一點無論是從技術上還是從感情上恐怕都是說不通的,更何況您的理由竟然是“phpmyadmin又難用介面難看死了,還有中文亂碼”,不過這也正好說明了您對於mySQL的不瞭解(確切地說應該是“mySQL的文盲”,因為以上兩個問題都正是您對於mySQL的無知才出現的,就算您說的對——它長得難看,那也可以換嗎,mySQL的管理工具多得是了),我想通過您的進一步學習,您應該會喜歡上它的。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.