2016-06-28 79 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 
* 
*/ 
相关问题