【问题标题】:CREATE TABLE in MySQL syntax errorMySQL 语法错误中的 CREATE TABLE
【发布时间】:2017-06-30 13:49:22
【问题描述】:

我正在尝试使用 db 将其与我的 java 项目链接 我正在使用 wampsarver 创建数据库。 请问我该怎么做才能解决这个问题。

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 附近')不为空,PhoneDOUBLE(20)不为空,IdINT(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主键放在表的最后一列吗?通常,这是第一个。
  • 不建议在列名中使用空格

标签: mysql sql phpmyadmin wampserver


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多