首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SAVEPOINT 語法錯誤排查:識別碼含「e」被誤判為浮點數

     編輯:MySQL 綜合教學

MySQL SAVEPOINT 語法錯誤排查:識別碼含「e」被誤判為浮點數

現場故障現象

主從複制環境,從庫 MySQL 5.5.5,SQL 執行緒報錯:

Last_Error: Error 'You have an error in your SQL syntax; 
check the manual ... near '6e86db84_14847168f19__8000' at line 1'
Query: 'SAVEPOINT 6e86db84_14847168f19__8000'

根因分析

解決方案

**用反引號(backtick)包裹識別碼**:

SAVEPOINT `6e86db84_14847168f19__8000`;

最佳實踐:所有識別碼統一加反引號

-- 表名、欄位名、資料庫名、別名、SAVEPOINT 識別碼
SELECT `id`, `name` FROM `db`.`table` WHERE `status` = 1;
SAVEPOINT `sp_1`;
RELEASE SAVEPOINT `sp_1`;

💡 曾見線上表有欄位名 check(保留字),因開發加了反引號才未踩坑。


相關 Bug 連結

  1. Savepoint Identifier should be enclosed with backticks
  2. Savepoint identifier is occasionally considered as floating point numbers

💡 一句話心法:寫 SQL 時,**所有使用者定義識別碼統一加反引號**,預防保留字衝突、解析器 Bug、大小寫敏感等全類別問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved