解决一个mysql的更新属性长度问题

需求背景:

       线上有一个 platform属性,原有长度为 varchar(10),但是突然需要填入一个11位长度的值;而偏偏这个属性在线上100张表中有50张都存在,并且名字各式各样,庆幸都包含 platform;例如 platform_, a_platform等;

      如何快速解决?

1.首先查出哪些表和列存在platform

select table_name,column_name,column_type from INFORMATION_SCHEMA.Columns 
where TABLE_SCHEMA = 'db_name' and column_name like '%platform%';

2.在Notepad++中(其他文本编辑器也行),分别粘贴出table_name,  column_name 列;

3.长按Alt键,进行列选中,写入如下语句,

ALTER TABLE table_name    MODIFY  column_name  VARCHAR(255);
...
ALTER TABLE table_name    MODIFY  column_name  VARCHAR(255);

注:长度255,不用不会浪费空间,用多少,占多少空间;

解决一个mysql的更新属性长度问题_第1张图片

4.进入数据库执行即可;这里需要注意,如果线上数据量很大,则执行时间很长;我执行的结果仅做参考:21万数据量的表 25秒执行完毕,50张表就可想而知了;

最后总结

如果线上存在几百万数据的表,建议说服需求方,把11位长度的值修改为10以内更为合理!

你可能感兴趣的:(mysql,数据库)