Mysql VARCHAR修改上的强制截断?

Mysql VARCHAR修改上的强制截断?,mysql,sql,ddl,alter-table,Mysql,Sql,Ddl,Alter Table,我想在一些列上将VARCHAR限制为255,以便添加索引 alter table striker modify contacts varchar(255) 当我尝试运行上面的命令时,我得到 Error Code: 1265. Data truncated for column 'contacts' at row 331 38.969 sec 是否有办法强制截断列,以便此命令成功缩短VARCHAR?我不在乎缩短列中的数据。您可以手动截断255个字符的列: UPDATE striker SE

我想在一些列上将VARCHAR限制为255,以便添加索引

alter table striker modify contacts varchar(255)
当我尝试运行上面的命令时,我得到

Error Code: 1265. Data truncated for column 'contacts' at row 331   38.969 sec

是否有办法强制截断列,以便此命令成功缩短VARCHAR?我不在乎缩短列中的数据。

您可以手动截断255个字符的列:

UPDATE striker
SET    contacts = SUBSTR (contacts, 1, 255);

现在,您知道值的长度不超过255个字符,可以安全地执行OP中的alter table语句。

您可以手动截断255个字符的列:

UPDATE striker
SET    contacts = SUBSTR (contacts, 1, 255);

现在,您知道值的长度不超过255个字符,可以安全地执行OP中的alter table语句。

为什么要截断列?只需使用列的长度说明符创建索引。以下是一个例子:

create index idx_striker_contacts on striker(contacts(255))

您可以对多个列执行此操作。

为什么要费心截断该列?只需使用列的长度说明符创建索引。以下是一个例子:

create index idx_striker_contacts on striker(contacts(255))

您可以对多个列执行此操作。

我想添加一个索引以提高查询性能。部分索引可以做到吗?@ChrisHall。MySQL应该在大多数情况下使用索引for=,我想添加一个索引来提高查询性能。部分索引可以做到吗?@ChrisHall。MySQL在大多数情况下都应该为=,,