2012-04-09 4 views
5

TEXT型の列を持つMySQLテーブルを作成することはできません。ここに私のMySQLの:構文エラー 'desc'という名前の列を持つテーブルを作成する

CREATE TABLE factions(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(16) NOT NULL, desc TEXT NOT NULL, admins TEXT NOT NULL, mods TEXT, members TEXT, land TEXT, enemies TEXT, allies TEXT) 

それは実行だとき、私はこれを取得:

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 'desc text NOT NULL, admins text NOT NULL, mods text, members text, land text, en' at line 1 

私が間違っているかを把握することはできません!私はそれが何か違いがあれば、Javaを使用しています。

+1

ためreserverd語であるため、私はこれらの列のほとんどのTEXTの使用がうん – IcedDante

+1

間違っているかなり確信している、ほとんどのそれらのTEXTの使用はかなり悪いものでした。幸いにも、私はもともとこの質問をして以来、私は大いに改善しました。 – Greg

+1

おそらく持っていると思った;) – IcedDante

答えて

14

descは予約語で、は、列の名前としてを使用すべきではありません。 descを列の名前として使用しますが、そうした場合は必ずバックティックで囲む必要があります。

CREATE TABLE factions(
    id INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id), 
    name VARCHAR(16) NOT NULL, 
    `desc` TEXT NOT NULL, 
    admins TEXT NOT NULL, 
    mods TEXT, 
    members TEXT, 
    land TEXT, 
    enemies TEXT, 
    allies TEXT 
); 

上記テストされ、動作しますが、あなたは常に(すべてのINSERTUPDATEDELETEに)バックティックでそれをラップする必要がありますので、あなたは名前を変更したい、またはちょうどに得ることができていますバックティックのすべてのフィールドをラップする習慣がありますが、これには他の利点があります。別の任意のものに

0

descは予約語であり、 は、テーブルやカラムに名前として与えてはならないことはできません。列名としてdescriptionを使用できます。名前の変更で、あなたの声明はうまくいくはずです。

+0

これは完全に正しいわけではありません。 – Umbrella

1

変更列名descを、それは別のノートでdescendまたはdescribe

関連する問題