MySQL Workbench ERROR 1064
-
22-10-2019 - |
Question
I have a problem with my database. I have created the model and now I want to sync it with my database on my WAMP Server (local) but it keeps giving me an error. I searched for the cause of the error for several days. Since I cannot find the problem, I've decided to share it with you.
Message log:
Executing SQL script in server ERROR: Error 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 ') NULL DEFAULT NULL , n_category VARCHAR(45) NULL DEFAULT NULL , PRIMARY K' at line 3
CREATE TABLE IF NOT EXISTS `telo2p`.`d_category`
(
`idd_category` INT(11) NOT NULL AUTO_INCREMENT,
`f_sells` DOUBLE(11) NULL DEFAULT NULL,
`n_category` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`idd_category`)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
SQL script execution finished: statements: 6 succeeded, 1 failed
Any advice about what I am doing wrong here?
Solution
Remove the (11)
from the DOUBLE(11)
:
`f_sells` DOUBLE NULL DEFAULT NULL ,
Approximate numeric dataypes (Float and Double) need no parameter. There is also a non-standard syntax with 2 parameters. From the MySQL docs, Floating-Point Types (Approximate Value):
MySQL allows a nonstandard syntax:
FLOAT(M,D)
orREAL(M,D)
orDOUBLE PRECISION(M,D)
. Here, “(M,D)
” means that values can be stored with up toM
digits in total, of whichD
digits may be after the decimal point. For example, a column defined asFLOAT(7,4)
will look like -999.9999 when displayed. MySQL performs rounding when storing values, so if you insert 999.00009 into aFLOAT(7,4)
column, the approximate result is999.0001
.