[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQ...

[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 ''<h1 style="text-align: center;">php實現 字符串分割</h' at line 1

1、總結

一句話總結:我原本都是直接打開sql複製裏面的內容到mysql中執行,此次是用nodepad++,因此出錯。這不是錯誤,1064是語法錯誤。

 

 

 

2、[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s

[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

 

3、完美解決 ERROR 1064 (42000): You have an error in your SQL syntax ... near …

在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的關鍵字。

在英文鍵盤輸入環境下,按圖示按鈕輸入反引號 `

相關文章
相關標籤/搜索