我正在将一列从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;
它说 ERROR 1406(22001):第7行的“描述”栏的数据太长
它不会截断列中的值并改变表格的原因?它在旧版本中的作用。
答案 0 :(得分:2)
可能需要检查sql模式,如果严格则会显示此错误
使用CHANGE或MODIFY更改数据类型时,MySQL会尝试 尽可能将现有列值转换为新类型。
警告此转换可能会导致数据更改。例如, 如果缩短字符串列,则可能会截断值。阻止 转换为新数据类型时成功的操作 会导致数据丢失,在使用前启用严格的SQL模式 ALTER TABLE(请参见第5.1.6节“服务器SQL模式”)。
答案 1 :(得分:0)
我建议你
1)将该表复制到临时表(通过插入选择)
2)改变原表
3)使用1)