Индексирование столбца 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;
Ответы
Ответ 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
.