Подтвердить что ты не робот

Индексирование столбца MySql TEXT?

Я запускал это с помощью MySql, и мне кажется, что это не нравится TEXT. С SQL-сервером я использую nvarchar(max) Что следует использовать в MySql? В других таблицах некоторые поля будут описаниями и могут быть длинными, поэтому в настоящий момент я думаю, что фиксированная длина плохая.

create table if not exists 
    misc_info (
        id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
        key TEXT UNIQUE NOT NULL,
        value TEXT NOT NULL
    )ENGINE=INNODB;
4b9b3361

Ответ 1

У вас не может быть индекс UNIQUE в текстовом столбце в MySQL.

Если вы хотите индексировать поле TEXT или BLOB, вы должны указать фиксированную длину для этого.

Из MySQL документация:

Столбцы BLOB и TEXT также могут быть индексируется, но длина префикса должна быть учитывая.

Пример:

CREATE UNIQUE INDEX index_name ON misc_info (key(10));

Ответ 2

Я думаю, что он зажимает имя поля key, а не тип TEXT (это должно быть прекрасно).

Зарезервированные слова в mySQL

(И как уже сказал @Pablo, поля memo не могут быть уникальными.)

Ответ 3

Две вещи:

  • Ключ - это зарезервированное слово.
  • Вы должны указать длину для UNIQUE(key) TEXT value.