2013-10-22 57 views
2

最奇怪的事情发生在这里。我有一个脚本可以创建一堆sql表。这里有一个简单的例子:MySQL脚本正在执行注释行

FileName is create_mydb.sql 

    --Drops/Creates table UserGroup 
    DROP TABLE IF EXISTS UserGroup; 
    CREATE TABLE UserGroup (
     user_group_id int NOT NULL AUTO_INCREMENT, 
     user_id int, 
     group_id int, 
     PRIMARY KEY (user_group_id) 
    ) ENGINE=INNODB; 


    -- Drops/Creates table Group 
    DROP TABLE IF EXISTS Group; 
    CREATE TABLE Group (
     group_id int NOT NULL AUTO_INCREMENT, 
     group_name varchar(50), 
     PRIMARY KEY (group_id) 
    ) ENGINE=INNODB; 

当我像在命令行中运行以下命令:

mysql>\. create_mydb.sql 

我得到这样的错误对于每个评论:

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 '--Drops/Creates table Group 

任何想法?

回答

3

MySQL为了区分您的评论和潜在的有效语法,需要双空头注释格式后跟一些空格或控制字符。

9.6. Comment Syntax

从一个“ - ”序列到行的结尾。在MySQL中,“ - ”(double-dash)注释样式需要在第二个短划线之后加上至少一个空格或控制字符(例如空格,制表符,换行符等)。这个语法与标准的SQL注释语法略有不同,如第1.8.5.5节“作为注释开始的'''所述。

1.8.5.5. '--' as the Start of a Comment

MySQL服务器3.23.3和最多也支持的一个变种“ - ”注释风格。也就是说,“ - ”开始注释序列后面必须跟一个空格(或者一个控制字符,如换行符)。需要空间来防止自动生成的SQL查询出现问题