0

「cartable」という sql テーブルを作成しようとしています。現在、MAMP(Mac版のWAMP)経由でphpmyadminを使用しています。

保存ボタンをクリックすると、次のエラーが表示されます。

    SQL query:

CREATE TABLE `cardatabase`.`CARTABLE` (
`ID` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`SLOTNUMBER` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`STATUS` ENUM( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`LATITUDE` DECIMAL( 20 ) NOT NULL ,
`LONGITUDE` DECIMAL( 20 ) NOT NULL ,
`LOCATION` VARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`DEVICEID` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL said: Documentation
#1064 - 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 '1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `LATITUDE` DECIMAL(20) N' at line 1 

varchar に変更するとテーブルが作成されるため、 double データ型に問題があるようです。それを回避する他の方法はありますか?事前に感謝します。どんな助けでも大歓迎です。

4

2 に答える 2

3

あなたの問題はここにあります:

`STATUS` ENUM( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

型は、数値オブジェクトではなく、文字列オブジェクトであるenumと想定されています。

MySQL docoから、

ENUM は、テーブルの作成時に列の指定で明示的に列挙された許可された値のリストから選択された値を持つ文字列オブジェクトです。

列挙値は、引用符で囲まれた文字列リテラルでなければなりません。文字列値に評価されるものであっても、式ではない場合があります。

于 2012-04-07T10:42:10.033 に答える
2

列挙行にエラーがある場合は、以下のように列挙値を事前定義する必要があります。

STATUSENUM('ravi', 'kotwani') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

完全なクエリ:

テーブルを作成しcardatabaseます。CARTABLE( IDVARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , SLOTNUMBERVARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , STATUSENUM('ravi', 'kotwani') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , LATITUDEDECIMAL( NULL 20 ) LONGITUDEDECIMAL( 20 ) NOT NULL , LOCATIONVARCHAR( 40 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , DEVICEIDVARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ) エンジン = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

于 2012-04-07T10:44:21.090 に答える