2016-06-28 150 views
5

我有一系列的腳本來創建一個模式,與像每一個指令之前,以下評論:MySQL錯誤1064(「你在你的SQL語法錯誤」)的SQL引發的評論

-------------------------------------------------------- 
-- Table TABLE_NAME 
-------------------------------------------------------- 

當我從MySQL在命令行中執行腳本,我收到了一堆錯誤類似如下:

ERROR 1064 (42000): 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 1 

(實際上,我得到爲每個評論一個錯誤,儘管消息的總是參照線1 )。

爲了快速解決我的問題,我只是刪除了註釋和腳本運行沒有問題,但我很驚訝地看到這樣的行爲,並無法在這裏找到相關的問題在stackoverflow。有沒有人有解釋?有沒有人觀察過這種奇怪的行爲?

我正在運行mysql 5.6.30,此時在ubuntu上的默認值爲5.6。

回答

8

MySQL Manual

從「 - 」序列到行的末尾。在MySQL中,「 - 」 (雙破折號)註釋風格要求第二破折號應遵循 至少一個空格或控制字符(例如空格,製表符, 換行,等等)。此語法與標準SQL 註釋語法略有不同,如第1.8.2.4節「作爲 註釋開始的開頭」中所述。

(重點煤礦)

TL; DR--指示評論必須跟隨的至少一個空格或控制字符。你的

固定碼:

-- ----------------------------------------------------- 
-- Table TABLE_NAME 
-- ----------------------------------------------------- 

在MySQL中,你也可以使用這個語法:

/* 
* Table TABLE_NAME 
*/ 

甚至這樣的:

# ----------------------------------------------------- 
# Table TABLE_NAME 
# ----------------------------------------------------- 
+0

而且,與甲骨文的語法,MySQL允許評論'/ *在這種風格* /'和' - 在這個style'。 –

+0

@OllieJones即使'#這種風格':D – Magisch

+0

我接受這個答案是最完整的。我習慣於將完整的破折線解釋爲SQL中的註釋,所以我很驚訝地發現它們引發了錯誤。我會通知我正在安裝的軟件的提供者,他們的「mysql」軟件的內容實際上不符合MySQL的要求:) –

3

你需要兩個破折號之後的空格來表示評論。沒有它,它只是一個字符串:

-- ------------------------------------------------------ 
-- Table TABLE_NAME 
-- ------------------------------------------------------ 
1

就個人而言,我只評論一行時,使用兩個破折號--。當與塊註釋工作,我傾向於使用以下格式:

/** 
* Table TABLE_NAME 
* 
*/ 
相關問題