我有一个主键为varchar(255)的表。在某些情况下,255个字符是不够的。我尝试将字段更改为文本,但我得到以下错误:
BLOB/TEXT column 'message_id' used in key specification without a key length
我该如何解决这个问题?
编辑:我还应该指出,这个表有一个多列的复合主键。
我有一个主键为varchar(255)的表。在某些情况下,255个字符是不够的。我尝试将字段更改为文本,但我得到以下错误:
BLOB/TEXT column 'message_id' used in key specification without a key length
我该如何解决这个问题?
编辑:我还应该指出,这个表有一个多列的复合主键。
当前回答
alter table authors ADD UNIQUE(name_first(767), name_second(767));
注意:767是MySQL在处理blob/text索引时索引列的字符数限制
参考:http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html
其他回答
去mysql编辑表->更改列类型为varchar(45)。
另外,如果你想在这个字段中使用索引,你应该使用MyISAM存储引擎和FULLTEXT索引类型。
像这样使用
@Id
@Column(name = "userEmailId", length=100)
private String userEmailId;
为了索引,必须将列类型更改为varchar或整型。
我曾经用过这个,也犯过你提到的错误:
CREATE INDEX idx_col1 ON my_table (col1);
然后我把它换成了这个,并解决了:
CREATE INDEX idx_col1 ON my_table (col1(255));