2012-04-07 36 views
0

我試圖創建一個名爲'cartable'的sql表。我目前通過MAMP(Mac版WAMP)使用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 2012-04-07 10:52:08

+0

想說小數對不起,但問題是與枚舉,我沒有指定的選項。現在整理出來:)謝謝! – progdoc 2012-04-07 11:13:05

回答

3

你的問題就在這裏:

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

enum類型應該是一個對象,而不是數字的。

the MySQL doco

的ENUM是與從在在創建表時的列規範明確列舉允許值的列表中選擇的一個值的字符串對象。

枚舉值必須是帶引號的字符串;它可能不是一個表達式,即使是一個評估爲字符串值的表達式。

+0

感謝這工作:) – progdoc 2012-04-07 11:12:04

2

你枚舉行有錯誤,你需要預先定義枚舉值如下:

STATUS ENUM( '拉維', 'kotwani')CHARACTER SET UTF8 COLLATE utf8_general_ci NOT NULL,

完整查詢:

CREATE TABLE cardatabaseCARTABLEID VARCHAR(10)字符集UTF8 COLLATE utf8_general_ci NOT NULL, SLOTNUMBER VARCHAR(10)字符集UTF8 COLLATE utf8_general_ci NOT NULL, STATUS ENUM( '拉維', 'kotwani')字符集UTF8 COLLATE utf8_general_ci NOT NULL, LATITUDE DECIMAL(20)NOT NULL, LONGITUDE DECIMAL(20)NOT NULL, LOCATION VARCHAR(40)字符集UTF8 COLLATE utf8_general_ci NOT NULL, DEVICEID VARCHAR(20)字符集UTF8 COLLATE utf8_general_ci NOT NULL )ENGINE = InnoDB的CHARACTER SET utf8 COLLATE utf8_general_ci;