6

TEXT型の列を持つMySQLテーブルを作成できないようです。これが私のMySQLです:

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を使用しています。

4

3 に答える 3

16

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
);

上記はテストされて機能しますが、常にバックティックでラップする必要があるため(すべてINSERTの、UPDATEおよびDELETE)、名前を変更するか、すべてのフィールドをバックティックでラップする習慣を身に付けることができます。これには他の利点があります。

于 2012-04-09T15:38:35.540 に答える
1

またはdescの予備語であるため、列名を別の名前に変更しますdescenddescribe

于 2012-04-09T15:40:56.353 に答える
0

descは予約語であり、テーブルまたは列に名前を付けることはできません description列名として使用できます。名前を変更すると、ステートメントが機能するはずです。

于 2012-04-09T15:34:36.800 に答える