mysql:alter table modify column上的列的数据太长

mysql:alter table modify column上的列的数据太长,mysql,alter-table,Mysql,Alter Table,我正在将一列从text更改为varchar列 +------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+-------+ | ID | bigint(19

我正在将一列从text更改为varchar列

+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| ID           | bigint(19)   | NO   | PRI | NULL    |       |
| STATUS           | varchar(120) | YES  |     | NULL    |       |
| PRIORITY         | varchar(120) | YES  |     | NULL    |       |
| DESCRIPTION      | text         | YES  |     | NULL    |       |
当我执行下面的查询时

alter table StatInfo modify column DESCRIPTION varchar(255) NULL;
上面说 错误1406(22001):对于第7行的“说明”列,数据太长


它不会截断列中的值并更改表why?。与旧版本一样,它可以工作。

可能需要检查sql模式,如果它严格,则会显示此错误

当您使用change或MODIFY更改数据类型时,MySQL会尝试 尽可能将现有列值转换为新类型

警告:此转换可能导致数据更改。例如 如果缩短字符串列,值可能会被截断。阻止 从后续if转换到新数据类型的操作 将导致数据丢失,请在使用之前启用严格的SQL模式 更改表(参见第5.1.6节“服务器SQL模式”)

我建议你去
1) 将该表复制到临时表上(通过插入选择)
2) 更改原始表格
3) 使用1)中描述的相同步骤恢复原始表中的值