CREATE TABLE in MySQL syntax error

2020-05-09 22:48发布

问题:

i am trying to use the db to link it with my java project and i am using wampsarver to create the db. what should i do to fix this please .

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 ') NOT NULL , Phone DOUBLE( 20 ) NOT NULL , Id INT( 20 ) NOT NULL AUTO_INCR' at line 6

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

回答1:

For double you have to add another digit after comma for precision.Also No space is allowed after name.the following script is working

 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


回答2:

DOUBLE requires precision too ( I gave DOUBLE(20,2) - change it as needed).

Plus there was a stray space at the end of serial number column name.

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` 
)
) 

Also, it's better to use DECIMAL instead of DOUBLE as the doubles can't be represented exactly and creates problem while doing comparisons.