为什么我不能这样创建一个表,我得到了一个错误?
CREATE TABLE `dynamusic_album` (
`id` VARCHAR(32) NOT NULL,
`title` VARCHAR(100) NULL DEFAULT NULL,
`cover` VARCHAR(100) NULL DEFAULT NULL,
`artist` VARCHAR(32) NULL DEFAULT NULL,
`published` DATETIME NULL DEFAULT NULL,
`description` MEDIUMTEXT NULL,
`genre` INT(11) NULL DEFAULT NULL,
`rating` DOUBLE(11) NOT NULL DEFAULT '1.0',
PRIMARY KEY (`id`)
)我的错误:
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 ') NOT NULL DEFAULT '1.0',
PRIMARY KEY (`id`)
)' at line 9SQL版本= 5.1.15
发布于 2018-11-13 14:52:17
在指定数字数据类型时,特别是处理小数点值时,需要指定两个参数。因此,需要更改DOUBLE(11)。
CREATE TABLE `dynamusic_album` (
`id` VARCHAR(32) NOT NULL,
`title` VARCHAR(100) NULL DEFAULT NULL,
`cover` VARCHAR(100) NULL DEFAULT NULL,
`artist` VARCHAR(32) NULL DEFAULT NULL,
`published` DATETIME NULL DEFAULT NULL,
`description` MEDIUMTEXT NULL,
`genre` INT(11) NULL DEFAULT NULL,
-- assuming you need at most 2 decimal places for rating
`rating` DOUBLE(11,2) NOT NULL DEFAULT '1.0',
PRIMARY KEY (`id`)
)参考:https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
MySQL允许非标准语法:浮点(M,D)或实(M,D)或双精度(M,D)。在这里,(M,D)指的是总存储在M位数以上的值,其中D位数可能在小数点之后。例如,定义为FLOAT(7,4)的列在显示时将类似于-999.9999。MySQL在存储值时执行四舍五入,因此如果将999.00009插入浮点数(7,4)列中,则近似结果为999.0001。
发布于 2018-11-13 15:22:16
只需使用DOUBLE而不是DOUBLE(11)。MySQL不知道DOUBLE(x),只知道DOUBLE(M,D) (参见MySQL文档)
https://stackoverflow.com/questions/53283494
复制相似问题