2011-12-29 21 views
1

このMYSQL 5.0構文で何が間違っているのか分かりませんか?SQL構文のエラー(MYSQL 5.0)

CREATE TABLE IF NOT EXISTS target (
    _id int(11) NOT NULL AUTO_INCREMENT, 
    time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    map_id int(11) DEFAULT NULL, 
    left int(11) DEFAULT NULL, 
    top int(11) DEFAULT NULL, 
    status tinyint(1) NOT NULL, 
    temperature int(11) DEFAULT NULL, 
    humidity float DEFAULT NULL, 
    lum int(11) DEFAULT NULL, 
    PRIMARY KEY (_id), 
    FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE 
) 

私はあなたのエラーを紹介します:

あなたのSQL構文でエラーが発生しています。 leftMySQL 5.0 reserved wordですので「左の整数デフォルトNULL、 トップの整数デフォルトNULL、 ステータスTINYINT(1)NOT」行5

+0

可能な複製[MySqlの保護されたキーワードと同じ名前を共有するテーブルにSQLを書き込むにはどうすればよいですか?](http://stackoverflow.com/questions/10706920/how-can-i-write-sql -for-a-table-that-shares-the-protected-nameと同じ名前) – Jocelyn

答えて

2

の近くで使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください。また、フィールド名をエスケープすることもできますが、テーブル定義で予約語を使用することは決してお勧めできません。

2

あなたはこのようにそれを記述する必要があります: ``(バッククォート)左の行の文字で

CREATE TABLE IF NOT EXISTS target (
    _id int(11) NOT NULL AUTO_INCREMENT, 
    time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    map_id int(11) DEFAULT NULL, 
    `left` int(11) DEFAULT NULL, 
    top int(11) DEFAULT NULL, 
    status tinyint(1) NOT NULL, 
    temperature int(11) DEFAULT NULL, 
    humidity float DEFAULT NULL, 
    lum int(11) DEFAULT NULL, 
    PRIMARY KEY (_id), 
    FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE 
) 

見て!

+0

ありがとうmacjohn !! – Aerox

0

フィールド名として予約語を使用しています。あなたはそれを行うことができますが、あなたはこのように、それらを適切にエスケープする必要があります。

CREATE TABLE IF NOT EXISTS target (
    `_id` int(11) NOT NULL AUTO_INCREMENT, 
    `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `map_id` int(11) DEFAULT NULL, 
    `left` int(11) DEFAULT NULL, 
    `top` int(11) DEFAULT NULL, 
    `status` tinyint(1) NOT NULL, 
    `temperature` int(11) DEFAULT NULL, 
    `humidity` decimal(13,2) DEFAULT NULL, 
    `lum` int(11) DEFAULT NULL, 
    PRIMARY KEY (_id), 
    FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE 
) 

私のアドバイスは、予約名を避けることであろう。