2012-04-07 70 views
0

私は 'cartable'というSQLテーブルを作成しようとしています。私は現在、MAMP(WAMPのMac版)経由でphpmyadminを使用しています。#1064 mysqlエラー - DOUBLE NOT NULL

私はこのエラーが表示され、保存ボタンをクリックすると:

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にそれを変更した場合など、ダブルデータ型に問題があるようです。その周りに他の方法がありますか?事前に感謝、どんな助けも大歓迎です。

+0

ダブルデータ型はどこですか? – JJJ

+0

小数点以下を言ったかったのですが、問題は列挙型でしたが、オプションを指定しませんでした。今すぐソートしました:)ありがとう! – progdoc

答えて

3

あなたの問題はここにある:

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

enumタイプは文字列オブジェクトではなく、数字の1であると考えられます。 the MySQL docoから

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

列挙値は、引用符付きの文字列リテラルである必要があります。文字列値に評価される式であっても、式ではない可能性があります。

+0

ありがとうございました:) – progdoc

2

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

STATUS ENUM( 'ラヴィ'、 'kotwani')CHARACTER SETののutf8 COLLATE utf8_general_ciは、NOT NULL、

完全なクエリ:

CREATE TABLE cardatabaseCARTABLEID VARCHAR(10)キャラクタ・セットUTF8のCOLLATE utf8_general_ci NULL NOT、 SLOTNUMBER VARCHAR(10)キャラクタ・セットUTF8のCOLLATE utf8_general_ciがNULLでない、 STATUS ENUM(utf8_general_ciがNULLでない 'ラヴィ'、 'kotwani')文字セットのUTF8 COLLATE、 LATITUDE DECIMAL(20)NOT NULL、 LONGITUDE DECIMAL(20)NOT NULL、 LOCATION VARCHAR utf8_general_ciがnullではない(40)文字セットUTF8のCOLLATE utf8_general_ci NULL NOT、 DEVICEID VARCHAR(20)キャラクタ・セットUTF8のCOLLATE)ENGINE = InnoDBのCHARACTER SET utf8 COLLATE utf8_general_ci;