2012-04-07 37 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;