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 时,表已创建。还有其他方法吗?在此先感谢,非常感谢任何帮助。

4

2 回答 2

3

你的问题出在这里:

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

enum类型应该是字符串对象,而不是数字对象。

MySQL 文档中,

ENUM 是一个字符串对象,其值选自创建表时列规范中明确枚举的允许值列表。

枚举值必须是带引号的字符串文字;它可能不是一个表达式,即使是一个计算为字符串值的表达式。

于 2012-04-07T10:42:10.033 回答
2

您在枚举行中有错误,您需要预先定义枚举值,如下所示:

STATUSENUM('ravi', 'kotwani') 字符集 utf8 COLLATE utf8_general_ci NOT NULL ,

完整查询:

创建表cardatabaseCARTABLE( IDVARCHAR(10) 字符集 utf8 排序 utf8_general_ci 非空, SLOTNUMBERVARCHAR(10) 字符集 utf8 排序 utf8_general_ci 非空, STATUS枚举('ravi','kotwani') 字符集 utf8 排序 utf8_general_ci 非空, LATITUDE十进制(20) 非空 LONGITUDEDECIMAL(20)非空, LOCATIONVARCHAR(40)字符集utf8整理utf8_general_ci非空, DEVICEIDVARCHAR(20)字符集utf8整理utf8_general_ci非空)引擎= InnoDB字符集utf8整理utf8_general_ci;

于 2012-04-07T10:44:21.090 回答