导致这个问题的原因是该列存在NULL值,而你要修改为NOT NULL DEFAULT ‘xxx’;
解决办法就是:
将该列为空的赋值一个默认值,然后再进行 NOT NULL 修改操作。
情景再现:
原来的表字段为,已经有近百条测试数据:
xxx varchar(50)
现在要改为
xxx varchar(255) NOT NULL DEFAULT ‘1’
出现报错:mysql ERROR 1265 (01000): Data truncated for column ‘xxx’
将该列赋值后再次修改问题解决:
mysql UPDATE test SET xxx=’1′ where xxx IS NULL;