MySQLMySql 修改列的诠释信息之主意

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真傻,真的…

网站地图xml地图