Liquibase не поддерживает частичные ключи?

Я выполняю sql, сгенерированный liquibase, и получаю:

CREATE INDEX `messageId_IDX` ON `messagedetails`(`messageId`);

ОШИБКА 1170 (42000) в строке 275: столбец BLOB/TEXT 'messageId' используется в спецификации ключа без длины ключа

Мой исходный sql был:

CREATE INDEX messageId_IDX ON MessageDetails(MessageID(128))

это ошибка в liquibase? Или я что-то упускаю?


person Stepan Yakovenko    schedule 06.01.2013    source источник
comment
Зачем вам индексировать столбец TEXT? (Кроме того, использование TEXT для столбца идентификатора звучит неправильно).   -  person a_horse_with_no_name    schedule 06.01.2013
comment
MessageId — это текстовая строка, идентифицирующая сообщение электронной почты. Может содержать до 200 символов. У меня есть индекс, потому что иногда я хочу искать сообщение по messageId.   -  person Stepan Yakovenko    schedule 06.01.2013
comment
Затем используйте varchar, а не text. text предназначен для больших текстовых столбцов, которые содержат, например. HTML- или XML-код.   -  person a_horse_with_no_name    schedule 06.01.2013
comment
вы можете сказать, как использовать его в спящем режиме? текст выделен по умолчанию.   -  person Stepan Yakovenko    schedule 06.01.2013
comment
Извините, я не использую Hibernate. Но если text по умолчанию, это звучит как ошибка в Hibernate (и не улучшает мое мнение о Hibernate)   -  person a_horse_with_no_name    schedule 06.01.2013
comment
Вы уверены, что создание индекса на varchar не имеет ограничений на размер поля индекса?   -  person Stepan Yakovenko    schedule 06.01.2013
comment
Ну, вы бы объявили столбец как varchar(200), так что это не проблема (если нет другого из этих глупых ограничений MySQL)   -  person a_horse_with_no_name    schedule 06.01.2013


Ответы (1)


В настоящее время Liquibase не поддерживает настройку длины индекса. См. этот нерешенный запрос функции, а также эта ветка списка рассылки

person Geert    schedule 07.01.2015