Ошибка SQL - столбец BLOB / TEXT 'url', используемый в спецификации ключа без длины ключа - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать таблицу, но я получаю эту ошибку:

SQL error - BLOB/TEXT column 'url' used in key specification without a key length

Это SQL, который я использую

CREATE TABLE recipes (
url         TEXT  NOT NULL,
name        TEXT  NOT NULL,
pic_url     TEXT  NOT NULL,
vegetarian  INT   NOT NULL,
ingredients TEXT  NOT NULL,
time        INT   NOT NULL,
rating      FLOAT NOT NULL,
ratings_no  INT   NOT NULL,
keywords    TEXT  NOT NULL,
UNIQUE (
    url
)
);

Кто-нибудь знает, как я могупочини это?Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете индексировать только первые столбцы столбца TEXT или BLOB.

UNIQUE (url(512)) 

сделает свое дело, создав индекс для первых 512 символов столбца.

Но вам следует избегать использования TEXT столбцов без крайней необходимости и почти никогда с индексами.Они входят в отдельно выделенные объекты в СУБД, что делает вставки, обновления и запросы медленнее.VARCHAR(2048) или такой тип данных будет работать лучше .И такие вещи, как уникальные индексы работают правильно.Пожалуйста прочтите это.https://dev.mysql.com/doc/refman/8.0/en/blob.html

Обратите внимание, что URL-адреса работают лучше при ограничении длиной около 2000 символов .

0 голосов
/ 05 февраля 2019

BLOB / TEXT имеют длину 65535. Индексы в MySQL значительно меньше .

Рекомендуется использовать VARCHAR(length) (латинский набор символов) длины, соответствующей URL.

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