我有一个主键为varchar(255)的表。在某些情况下,255个字符是不够的。我尝试将字段更改为文本,但我得到以下错误:

BLOB/TEXT column 'message_id' used in key specification without a key length

我该如何解决这个问题?

编辑:我还应该指出,这个表有一个多列的复合主键。


当前回答

DROP该表并再次运行Spring Project。 这可能会有所帮助。 有时你重写了foreignKey。

其他回答

我得到这个错误时,添加一个索引的文本类型列表。您需要声明每个文本类型要使用的大小。

将大小放入括号()内

如果使用了太多字节,您可以在方括号中为varchar声明一个大小,以减少用于索引的数量。即使你已经为varchar(1000)这样的类型声明了一个大小。您不需要像其他人所说的那样创建一个新表。

添加索引

alter table test add index index_name(col1(255),col2(255));

添加唯一索引

alter table test add unique index_name(col1(255),col2(255));

你可以在alter table请求中指定键的长度,就像这样:

alter table authors ADD UNIQUE(name_first(20), name_second(20));

DROP该表并再次运行Spring Project。 这可能会有所帮助。 有时你重写了foreignKey。

该问题的解决方案是,在CREATE TABLE语句中,您可以在列创建定义之后添加约束UNIQUE (problemtextfield(300)),例如,为TEXT字段指定300个字符的键长度。然后,问题文本字段的前300个字符需要是唯一的,之后的任何差异将被忽略。

我知道现在已经很晚了,但是删除唯一键约束解决了这个问题。我没有使用TEXT或LONGTEXT列作为PK,但我试图使它独特。我得到了1170的错误,但当我删除了英国,错误也被删除了。

我不完全明白为什么。