DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement
公司主營業務:成都做網站、網站制作、成都外貿網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯推出焦作免費做網站回饋大家。
其中,
handler_type的取值范圍:CONTINUE | EXIT | UNDO
condition_value的取值范圍:SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code
這個語句指定每個可以處理一個或多個條件的處理程序。如果產生一個或多個條件,指定的語句被執行。 對一個CONTINUE處理程序,當前子程序的執行在執行處理程序語句之后繼續。對于EXIT處理程序,當前BEGIN...END復合語句的執行被終止。UNDO 處理程序類型語句還不被支持。
· SQLWARNING是對所有以01開頭的SQLSTATE代碼的速記。
· NOT FOUND是對所有以02開頭的SQLSTATE代碼的速記。
· SQLEXCEPTION是對所有沒有被SQLWARNING或NOT FOUND捕獲的SQLSTATE代碼的速記。
注:除了SQLSTATE值,MySQL錯誤代碼也不被支持。
例:
delimiter $$
CREATE TABLE `_t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`val1` varchar(20) DEFAULT NULL,
`val2` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=latin1$$
DELIMITER $$
CREATE DEFINER=`abandonship`@`%` PROCEDURE `P_TestException`()
BEGIN
declare _var,_err int default 0;
一、Can’t connect to MySQL server on ‘localhost’ (10061)
翻譯:不能連接到 localhost 上的mysql
分析:這說明“localhost”計算機是存在的,但在這臺機器上卻沒提供MySQL服務。
需要啟動這臺機器上的MySQL服務,如果機子負載太高沒空相應請求也會產生這個錯誤。
解決:既然沒有啟動那就去啟動這臺機子的mysql。如果啟動不成功,多數是因為你的my.ini配置的有問題。重新配置其即可。
如果覺得mysql負載異常,可以到mysql/bin 的目錄下執行mysqladmin -uroot -p123 processlist來查看mysql當前的進程。
二、Unknown MySQL Server Host ‘localhosadst’ (11001)
翻譯:未知的MySQL服務器 localhosadst
分析:服務器 localhosasdst 不存在。或者根本無法連接
解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設置為正確的mysql 服務器地址。
三、Access denied for user: ‘roota@localhost’ (Using password: YES)
翻譯:用戶 roota 訪問 localhost 被拒絕(沒有允許通過)
分析:造成這個錯誤一般數據庫用戶名和密碼相對mysql服務器不正確
解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實后重新設置保存即可。
四、Access denied for user: ‘red@localhost’ to database ‘newbbs’
翻譯:用戶 red 在localhost 服務器上沒有權限操作數據庫newbbs
分析:這個提示和問題三是不同的。那個是在連接數據庫的時候就被阻止了,而這個錯誤是在對數據庫進行操作時引起的。比如在select update等等。這個是因為該用戶沒有操作數據庫相應的權力。比如select 這個操作在mysql.user.Select_priv里記錄 Y 可以操作N 不可以操作。
解決:如果是自己的獨立主機那么更新mysql.user 的相應用戶記錄,比如這里要更新的用戶為red 。或者直接修改 ./config.inc.php 為其配置一個具有對數據庫操作權限的用戶
或者通過如下的命令來更新授權grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’
提示:更新了mysql庫中的記錄一定要重啟mysql服務器才能使更新生效
FLUSH PRIVILEGES;
五、No Database Selected
翻譯:沒有數據庫被選擇上
分析:產生的原因有兩種
config.inc.php 里面$dbname設置的不對。致使數據庫根本不存在,所以在 $db-select_db($dbname); 時返回了false
和上面問題四是一樣的,數據庫用戶沒有select權限,同樣會導致這樣的錯誤。當你發現config.inc.php的設置沒有任何問題,但還是提示這個錯誤,那一定就是這種情況了。
解決:對癥下藥
打開config.inc.php 找到$dbname核實重新配置并保存
同問題四的解決方法
六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)
翻譯:不能打開xxx_forums.MYI
問題分析:
這種情況是不能打開 cdb_forums.MYI 造成的,引起這種情況可能的原因有:
1、服務器非正常關機,數據庫所在空間已滿,或一些其它未知的原因,對數據庫表造成了損壞。
2、類 unix 操作系統下直接將數據庫文件拷貝移動會因為文件的屬組問題而產生這個錯誤。
解決方法:
1、修復數據表
可以使用下面的兩種方式修復數據表:(第一種方法僅適合獨立主機用戶)
1)使用 myisamchk ,MySQL 自帶了專門用戶數據表檢查和修復的工具 —— myisamchk 。更改當前目錄到 MySQL/bin 下面,一般情況下只有在這個下面才能運行 myisamchk 命令。常用的修復命令為:myisamchk -r 數據文件目錄/數據表名.MYI;
2)通過 phpMyAdmin 修復, phpMyAdmin 帶有修復數據表的功能,進入到某一個表中后,點擊“操作”,在下方的“表維護”中點擊“修復表”即可。
注意:以上兩種修復方式在執行前一定要備份數據庫。
今天晚上運營同事反饋了系統有個列表數據查詢不出來,篩選某個條件又能查出數據來。當運營反饋時,立馬收到線上報警郵件提示如下:
也就是拋出?MySQLDataException異常,由于定性思維的原因,一直在排查sql問題,不斷嘗試替換某個字段的數據拼接查詢,最終還是失敗了。由于經驗較少,不斷嘗試column '15'這一列,心想沒有15這個字段呀(思維方向錯誤了)。導致問題排查了兩個小時;最后聯想到INTEGER類型出錯,干脆就直接查找mode里的對象與sql查詢查詢出來的字段作比較,最終發現其實是某個字段數據值長度突然大增(部門其他同事對接大廠時,修改了字段長度,然后我們這邊的系統無意識到字段長度,還是使用Integer類型,最終導致異常出現),修改成long類型后解決,但這種修改方法也會隨著時間問題變成一個坑。
總結今晚遇到的問題,就是以前菜的坑太少了,導致問題定位錯誤。錯誤日志:'1.00000539598E11' in column '15' is outside valid range for the datatype INTEGER翻譯過來也就是“15”列中的“1.00000539598E11”超出了數據類型整數的有效范圍。不是15那個字段,而是第15列(MB? ?太SB了)。因此在此做個筆記,以防以后繼續犯類似思維錯誤。
當前標題:mysql怎么查看異常 mysql 異常
當前路徑:http://vcdvsql.cn/article44/hehphe.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、網站營銷、微信公眾號、品牌網站建設、網站排名、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯