国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

關于MySQL中savepoint語句使用時所出現的錯誤

2024-07-24 13:07:10
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了關于MySQL中savepoint語句使用時所出現的錯誤,字符串出現e時所產生的問題也被作為MySQL的bug進行過提交,需要的朋友可以參考下

前幾天幫同事解決一個案例,在主從復制環境下,從庫上的MySQL版本號是5.5.5,遇到下面的錯誤:

 

 
  1. #其他非相關信息我都隱藏掉了 
  2. [(yejr@imysql.com)]> show slave status /G; 
  3. Slave_IO_Running: Yes 
  4. Slave_SQL_Running: No 
  5. Last_Errno: 1064 
  6. Last_Error: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '6e86db84_14847168f19__8000' at line 1' on query. Default database'act'. Query: 'SAVEPOINT 6e86db84_14847168f19__8000' 
  7. Last_IO_Errno: 0 
  8. Last_IO_Error: 
  9. Last_SQL_Errno: 1064 
  10. Last_SQL_Error: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '6e86db84_14847168f19__8000' at line 1' on query. Default database'act_log'. Query: 'SAVEPOINT 6e86db84_14847168f19__8000' 

第一感覺是遇到保留關鍵字了,不過看到這么長的字符串,不應該是保留關鍵字才對。

經過嘗試,最后發現是字符串中的 “e” 這個字符如果存在就可能會報錯,看起來應該是bug才對了。

在MySQL的bug系統里確實找到了這個bug,不過看bug描述,在5.5版本中應該是已經修復了才對,看來太不靠譜了呀~~

關于這個bug:Savepoint identifier is occasionally considered as floating point numbers

其實除了升級版本外,解決方法也很簡單,把savepoint后面的 identifier 字符串用反引號(波浪號的下檔鍵,英文叫做 backticks 鍵)引用起來就行。

例如:

 

 
  1. savepoint `6e86db84_14847168f19__8000`; 

這樣就可以了。

這個案例也提示我們,在寫SQL時,涉及到數據庫、表、字段、identifier 等名稱時,最好是都能用反引號引用,確保可用。

曾經看到線上數據表有個字段名是 check ,這個名字在MySQL里很早就已經是保留關鍵字,幸好開發同學比較靠譜,都加上了反引號。

關于savepoint的2個bug:

Savepoint Identifier should be enclosed with backticks

Savepoint identifier is occasionally considered as floating point numbers

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜新市| 上犹县| 隆回县| 陆丰市| 呈贡县| 桐城市| 贵州省| 如东县| 沾益县| 梁平县| 梓潼县| 新密市| 兴化市| 汽车| 武山县| 兰西县| 通道| 永州市| 准格尔旗| 卫辉市| 新绛县| 深水埗区| 石泉县| 承德县| 凤庆县| 囊谦县| 富裕县| 天长市| 龙州县| 皋兰县| 班戈县| 安塞县| 肃南| 金平| 新安县| 宜川县| 昭觉县| 阿鲁科尔沁旗| 堆龙德庆县| 额尔古纳市| 岳池县|