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 に答える