首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能用这种方式创建一个表?

问为什么我不能用这种方式创建一个表?
EN

Stack Overflow用户
提问于 2018-11-13 14:43:17
回答 2查看 49关注 0票数 1

为什么我不能这样创建一个表,我得到了一个错误?

代码语言:javascript
复制
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`)
)

我的错误:

代码语言:javascript
复制
    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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-13 14:52:17

在指定数字数据类型时,特别是处理小数点值时,需要指定两个参数。因此,需要更改DOUBLE(11)。

代码语言:javascript
复制
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。

票数 2
EN

Stack Overflow用户

发布于 2018-11-13 15:22:16

只需使用DOUBLE而不是DOUBLE(11)。MySQL不知道DOUBLE(x),只知道DOUBLE(M,D) (参见MySQL文档)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53283494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档