1. 程式人生 > 實用技巧 >check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")

check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")

在用原生SQL語句插入的時候,報了一個錯,下面我們來看一下我的原生 SQL 和報錯情況

        sql = "insert into bluser (name,gender,order) values ('%s','%s','%s')" % (name, gender,order)

可以看出SQL語句是沒有問題的,但是在插入資料庫的時候,卻報錯了,報錯的原因是 order 前面多了半個 (')單引號

pymysql.err.ProgrammingError: 
(1064, "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 'order) values ('徐小波','男',' at line 1
")

1-查過一些答案,說過是字串轉義的問題,加上 pymysql.escape_string(order) 進行字串轉義,但是加上之後依然報錯,而且報錯內容也沒有改變

        # sql = "insert into bluser (name,gender,order) values ('%s','%s','%s')" % (name, gender,pymysql.escape_string(order))

2-說的是在建表的時候,欄位名稱與表名稱不能使用這個符號 "'" , 而因該使用這個符號 "`" 也就是鍵盤tab上面那個符號,具體形式如下

CREATE TABLE `order_master` (

 中間省略偏離主題程式碼
  
) comment 'XX表';

但是問題依然沒有解決,後來,經過一頓胡亂操作找到解決的辦法

如下圖

也就是在 order 上 添加了 "``" 包起來,然後問題解決了。

        sql = "insert into bluser (name,gender,`order`) values ('%s','%s','%s')" % (name, gender,order)