为什么我不能以这种方式创建表,但出现错误?
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 9
SQL版本= 5.1.15
答案 0 :(得分:2)
在指定数字数据类型(尤其是处理小数点值)时,需要指定两个参数。因此,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允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE 精度(M,D)。在此,(M,D)表示最多可以存储值 总共M位,其中D位可能在小数点后。 例如,定义为FLOAT(7,4)的列将看起来像-999.9999 显示时。 MySQL在存储值时执行四舍五入,因此如果您 将999.00009插入FLOAT(7,4)列中,近似结果为 999.0001。
答案 1 :(得分:0)
只需使用DOUBLE
而不是DOUBLE(11)
。 AFAICS,MySQL不知道DOUBLE(x)
,只有DOUBLE(M,D)
(请参阅MySQL docs)