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

发布时间:2024年01月19日

需求背景:

?????? 线上有一个 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,不用不会浪费空间,用多少,占多少空间;

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

最后总结

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

文章来源:https://blog.csdn.net/qq_16116549/article/details/135699185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。