0

我正在尝试使用 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
4

2 回答 2

3

使用反引号,因为order保留字

 CREATE TABLE `Order` ....

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

于 2013-10-01T15:30:38.073 回答
0

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

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

于 2013-10-01T15:32:39.933 回答