MySql 修改列的注解信息的主意

1. 问题

    
已经来为数不少数据的准业务逻辑分表的相同多样表修改一个字段(类型,如-1:默认值,1:表示’人员id’,2:表示‘公司id’)的诠释

2. 解决智

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

这种方法会重建表,如果数据量大,一个说明100w数据,执行1min,如果分表数30只那么就算一共要履行30min

     2> 使用初数据表
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 ‘;

本想这种修改元数据的方好修改表的字段注释,但是尚未权限履行,错误如下:
错误代码: 1044

Access denied for user ‘usr’@’%’ to database ‘information_schema’
啊?这是吗毛也???!!!
想法特别充裕,现实非常骨感。

法定说明:
INFORMATION_SCHEMA是信数据库,其中保存在关于MySQL服务器所保障的持有其他数据库的音讯。在INFORMATION_SCHEMA中,有频繁单单纯读表。它们其实是视图,而不是基本表,因此,你拿无法看出和之有关的另公文。
每位MySQL用户均产生且访问这些发明,但单限于表中的一定行,在这类行遭带有用户拥有确切访问权限的目标。
实在,尽管不待生成名为INFORMATION_SCHEMA的文件,我们以提供了号称也INFORMATION_SCHEMA的新数据库。可以动用USE语词以INFORMATION_SCHEMA选择啊默认数据库,但看该数据库被所含表的唯一办法是使SELECT语句。不可知以里面插入内容,不能够更新她,也非克去其中的情节。
     
网摘:
Mysql没有Oracle那么方便,修改注释的时段用指定{type}(这是Mysql设计的不合理性!);系统数据字典表COLUMNS中生保留所有表的字段信息,但是系统字典表是才读之,无法修改注释;
据此,Mysql修改注释必须依照上面的格式对两样类型做判定,并且带有长度的字段必须指明length与decimals,否则更新注释的时段会修改length,decimals为默认值的;
修改Mysql注释是起劳心的工作,但是呢只好这样了

    3> 难道就没别的方法了?
Are you kidding?!如果没别的艺术了我会写3!!!
当对一个大表进行ALTER
TABLE的时候,性能问题即生出了。MySQL大部分改动的步骤如下:根据新的申结构创造一个空表,从旧表中把数据取出来插入到新表中,在去旧表。这是单深悠久的进程。许多人ALTER
TABLE之后,都生等1小时或1龙的悲苦经历。
卿可以这样,新建一个发明,改变十分列的comment,然后原始实例关闭,替换.frm文件,再重新开。
详情请咨询dba,这可是个技巧存,我顶rd表示一头雾水。可以参考

      4> 我相当RD难道会坐改变不了column注释就以此放弃呢?
R U kidding again?!!
拗不过方案,修改你的主次DB实体注释,大部分实体注释和DB注释一致,但是如果遇上频繁长type类型这种情形。。。还是跟DB实体加注吧,或者一旦生枚举类型,枚举里描述清楚,这样起码让后人能够不那么迷茫

吐槽:mysql真傻,真的…

相关文章