[Err] 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 at line 3php
MySQL 5.6,Navicat For MySQL 10.0.10 中執行SQL語句時提示此錯誤,在CMD中執行SQL文件中的語句時提示如下錯誤:html
1 D:\Users\Aven>mysql -uroot -p < F:\Publish\Data\share_update.sql 2 Warning: Using a password on the command line interface can be insecure. 3 ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the ma 4 nual that corresponds to your MySQL server version for the right syntax to use n 5 ear 'ALTER聽TABLE聽mcu聽CHANGE聽`LOCAL_ID`聽`LOCAL_ID`聽VARCHAR(50)聽' 6 at line 1
發現解決該問題的關鍵,是錯誤提示中的空格都是「聽」,這讓我想到是文件的編碼問題,而後作文件編碼的轉換。
推薦使用Notepad++,編碼轉換很是方便,如圖:
node
轉換爲UTF-8格式,問題依舊,再轉爲ANSI格式試試:
mysql
哈哈,原形畢露了吧!把?都替換爲空格,保存,再執行,一切OK了。sql
爲何會出現這種問題呢?
這些語句是從QQ複製到Word中,又從Word中複製到Notepad++中,
估計是從QQ或Word中複製出來的空格有問題。markdown
在MySQL命令行使用sql語句進行建表時,MySQL 報錯,這個問題以前遇到過幾回,可是老是會由於疏忽又相遇,今天把這個問題寫出來,加深印象吧。app
sql語句:編碼
CREATE TABLE 'lrs_audit_rule_package'( 'id' BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵', 'package_code' varchar(6) NOT NULL COMMENT '規則包', 'package_type' varchar(2) NOT NULL COMMENT '規則包類型', 'package_desc' varchar(100) COMMENT '描述', 'create_time' datetime DEFAULT NULL COMMENT '創始時間', 'modified_time' datetime DEFAULT NULL COMMENT '修改時間' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='審覈規則包';
看上去這條sql語句確實沒毛病,可是運行起來就是報錯
報錯信息:spa
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 ''lrs_audit_rule_package'( 'id' BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT ' at line 1
其實這個問題就是語法上的錯誤,在MySQL中,爲了區分MySQL的關鍵字與普通字符,MySQL引入了一個反引號。
詳情見:https://dev.mysql.com/doc/refman/5.5/en/keywords.html命令行
在上述的sql語句中,列名稱使用的是單引號而不是反引號,因此會就報了這個錯誤出來。修改後
CREATE TABLE `lrs_audit_rule_package`( `id` BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵', `package_code` varchar(6) NOT NULL COMMENT '規則包', `package_type` varchar(2) NOT NULL COMMENT '規則包類型', `package_desc` varchar(100) COMMENT '描述', `create_time` datetime DEFAULT NULL COMMENT '創始時間', `modified_time` datetime DEFAULT NULL COMMENT '修改時間' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='審覈規則包';
再次運行就不會報錯了,可是有一點須要注意,後面列的註釋不能用反引號,由於這只是一個普通字符串,不是MySQL的關鍵字。
在英文鍵盤輸入環境下,按圖示按鈕輸入反引號 `