Почему я не могу создать таблицу таким образом? - PullRequest
0 голосов
/ 13 ноября 2018

Почему я не могу создать таблицу таким образом, я получаю сообщение об ошибке?

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

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Просто используйте DOUBLE вместо DOUBLE(11).AFAICS, MySQL не знает DOUBLE(x), только DOUBLE(M,D) (см. Документы MySQL )

0 голосов
/ 13 ноября 2018

При указании числовых типов данных, особенно при обработке значений десятичной точки, необходимо указать два аргумента. Итак, 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...