MySql 修改列的笺注音信的法子

1. 问题

    
已经有众多多少的依据作业逻辑分表的壹连串表修改二个字段(类型,如-一:暗中认可值,一:表示’人士id’,2:表示‘公司id’)的证明

二. 消除办法

     1> 使用alter table方法
ALTER TABLE table_name  MODIFY COLUMN column_name
TINYINT(tinyint表示column类型) COMMENT
‘-1:默认值,1:人员id,2:公司id’;

那种方法会重建表,要是数据量大,多少个表100w数据,执行一min,如若分表数三十7个那就一共需求实行30min

     二> 使用元数据表
USE information_schema;
UPDATE COLUMNS t  SET t.column_comment  =
‘-1:默认值,1:人员id,2:公司id’  WHERE
t.TABLE_SCHEMA=’database_name’ AND t.table_name=’table_name’  AND
t.COLUMN_NAME=’column_name ‘;

 查询语句,更新前能够查询一下

SELECT t.column_comment FROM COLUMNS t WHERE
t.TABLE_SCHEMA=’database_name’ AND t.TABLE_NAME=’table_name’ AND
t.COLUMN_NAME=’column_name ‘;

本想这种修改元数据的法子能够修改表的字段注释,可是并未有权限履行,错误如下:
错误代码: 十4四

Access denied for user ‘usr’@’%’ to database ‘information_schema’
嘿?那是为毛呢???!!!
设法很丰硕,现实很骨感。

法定表明:
INFORMATION_SCHEMA是消息数据库,个中保存着关于MySQL服务器所保险的兼具其余数据库的新闻。在INFO途睿欧MATION_SCHEMA中,有数个只读表。它们其实是视图,而不是基本表,因此,你将无法看到与之皮之不存毛将焉附的任何公文。
各位MySQL用每户平均有权访问这一个表,但仅限于表中的一定行,在那类行中富含用户拥有确切访问权限的靶子。
实则,固然不须要生成名字为INFOCR-VMATION_SCHEMA的文件,大家仍提供了名称叫INFO汉兰达MATION_SCHEMA的新数据库。能够选取USE语句将INFOBMWX五MATION_SCHEMA选用为暗许数据库,但访问该数据库中所含表的绝无仅有方式是采纳SELECT语句。不能够在当中插入内容,不可能更新它们,也无法去除个中的剧情。
     
网摘:
Mysql未有Oracle那么方便人民群众,修改注释的时候必要钦赐{type}(那是Mysql设计的不合理性!);系统数据字典表COLUMNS中有保存全数表的字段音讯,可是系统字典表是只读的,不能够修改注释;
之所以,Mysql修改注释必须根据位置的格式对分化种类做判断,并且带有长度的字段必须指明length与decimals,否则更新注释的时候会修改length,decimals为默许值的;
修改Mysql注释是件劳心的事体,不过也不得比不上此了

    3> 难道就从未有过其他艺术了?
Are you kidding?!假诺未有其他办法了笔者会写三!!!
当对于贰个大表进行ALTEHighlanderTABLE的时候,性能难题就发出了。MySQL一大半转移的步骤如下:依据新的表结构创制一个空表,从旧表中把数据取出来插入到新表中,在剔除旧表。那是个非凡久远的进程。许四个人ALTE昂科威TABLE之后,都有等待壹小时或然壹天的伤湿疹历。
你可以这么,新建3个表,改变十二分列的comment,然后原始实例关闭,替换.frm文件,再重启。
详情请咨询dba,那可是个技术活,笔者等rd表示一只雾水。能够参照

      4> 我等卡宴D难道会因为改不了column注释就此吐弃呢?
R U kidding again?!!
拗可是方案,修改你的主次DB实体注释,超过五分三实体注释和DB注释壹致,可是倘诺赶上频仍扩充type类型那种状态。。。依然跟DB实体加注释吧,可能一旦有枚举类型,枚举里描述清楚,那样起码让后代能够不那么迷茫

吐槽:mysql真傻,真的…

相关文章