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

时间:2011-07-13 13:35:48

标签: mysql alter-table

我正在将一列从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行的“描述”栏的数据太长

它不会截断列中的值并改变表格的原因?它在旧版本中的作用。

2 个答案:

答案 0 :(得分:2)

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

  

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

     

警告此转换可能会导致数据更改。例如,   如果缩短字符串列,则可能会截断值。阻止   转换为新数据类型时成功的操作   会导致数据丢失,在使用前启用严格的SQL模式   ALTER TABLE(请参见第5.1.6节“服务器SQL模式”)。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

答案 1 :(得分:0)

我建议你 1)将该表复制到临时表(通过插入选择)
2)改变原表
3)使用1)

中描述的相同步骤恢复原始表中的值
相关问题