MySQL 语法错误中的 CREATE TABLE
Posted
技术标签:
【中文标题】MySQL 语法错误中的 CREATE TABLE【英文标题】:CREATE TABLE in MySQL syntax error 【发布时间】:2017-06-30 13:49:22 【问题描述】:我正在尝试使用 db 将其与我的 java 项目链接 我正在使用 wampsarver 创建数据库。 请问我该怎么做才能解决这个问题。
1064 - 您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册以获取正确的语法使用 附近')不为空,
Phone
DOUBLE(20)不为空,Id
INT(20)不 第 6 行的 NULL AUTO_INCR'
CREATE TABLE `Laptop` (
`serial number ` INT( 20 ) NOT NULL ,
`Device Model` VARCHAR( 20 ) NOT NULL ,
`Device Manufacturer` VARCHAR( 20 ) NOT NULL ,
`Device Color` VARCHAR( 20 ) NOT NULL ,
`Screen size` DOUBLE( 20 ) NOT NULL ,
`Phone` DOUBLE( 20 ) NOT NULL ,
`Id` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
UNIQUE (
`serial number `
)
) ENGINE = innodb
【问题讨论】:
你真的习惯把auto_increment主键放在表的最后一列吗?通常,这是第一个。 不建议在列名中使用空格 【参考方案1】:DOUBLE
也需要精度(我给了DOUBLE(20,2)
- 根据需要更改)。
另外,serial number
列名末尾还有一个杂散空格。
CREATE TABLE `Laptop` (
`serial number` INT( 20 ) NOT NULL ,
`Device Model` VARCHAR( 20 ) NOT NULL ,
`Device Manufacturer` VARCHAR( 20 ) NOT NULL ,
`Device Color` VARCHAR( 20 ) NOT NULL ,
`Screen size` DOUBLE( 20,2) NOT NULL ,
`Phone` DOUBLE( 20 ,2) NOT NULL ,
`Id` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
UNIQUE (
`serial number`
)
)
另外,最好使用DECIMAL
而不是DOUBLE
,因为无法准确表示双精度,并且在进行比较时会产生问题。
【讨论】:
【参考方案2】:对于双精度,您必须在逗号后添加另一个数字以确保精度。此外,名称后不允许有空格。以下脚本正在运行
CREATE TABLE `Laptop` (
`serial number` INT( 20 ) NOT NULL ,
`Device Model` VARCHAR( 20 ) NOT NULL ,
`Device Manufacturer` VARCHAR( 20 ) NOT NULL ,
`Device Color` VARCHAR( 20 ) NOT NULL ,
`Screen size` DOUBLE( 20,4 ) NOT NULL ,
`Phone` DOUBLE( 20,4 ) NOT NULL ,
`Id` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
UNIQUE (
`serial number`
)
) ENGINE = innodb
【讨论】:
以上是关于MySQL 语法错误中的 CREATE TABLE的主要内容,如果未能解决你的问题,请参考以下文章
SQL 语句“CREATE TABLE TRIP...”中的语法错误
为了工作,我的 CREATE TABLE 中缺少啥? mysql 8.X