【问题标题】:Create table Order using MySQL & MariaDB giving 1064 error使用 MySQL 和 MariaDB 创建表 Order 给出 1064 错误
【发布时间】:2013-10-01 15:29:49
【问题描述】:

我正在尝试使用 MySQL 和 MariaDB 创建一个名为 Order 的表。除了表格的 id 之外,我已经删除了所有内容。如果我将表名更改为 Test 之类的名称,它可以工作,但是将表创建为 Order、“Order”或“Order”不起作用。

SQL:

CREATE TABLE IF NOT EXISTS Order ( 
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
) ENGINE = InnoDB;

错误信息:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Order ( id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE = InnoDB' at line 1

但这有效:

CREATE TABLE IF NOT EXISTS Test ( 
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 
) ENGINE = InnoDB;

MySQL 版本输出:

mysql  Ver 15.1 Distrib 5.5.33a-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    使用backticks,因为orderreserved word

     CREATE TABLE `Order` ....
    

    或者更好,不要这样做。这会造成混乱。

    【讨论】:

    • 谢谢,这正是我所需要的。我知道这是一个保留字,但我不熟悉如何使用它(我想我没有意识到它是在其他帖子中使用的反引号)。我通常不会像这样命名表,但我正在关注一个有一些客户和订单关系的 SQL 示例的类,我想自己创建它并遇到了这个问题。
    • 非常感谢您节省了我的时间 :)
    【解决方案2】:

    这是一个保留字。保留字列表见http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

    如果您需要使用保留字作为表名或列名,请将其放在反引号中。但是你最好避免保留字,因为它们会在将来造成很多混乱和很多错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 2018-01-26
      • 2011-04-17
      • 2022-01-15
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      相关资源
      最近更新 更多