| 
                         概述 
MySQL数据库存放数据目录里的db.opt文件是MySQL建库过程中自动生成的。 
细心的朋友可能会发现有时候在MySQL数据库的某些库目录下有个db.opt文件,那这个文件是干什么用的呢?如果你用记事本等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。 
db.opt 
MySQL的每个数据库目录中有一个文件db.opt,该文件主要 用来存储当前数据库的默认字符集和字符校验规则。 
- default-character-set=utf8  
 - default-collation=utf8_general_ci 
 
  
该文件中存储的是创建数据库时默认的字符集和字符集校验规则,则该数据库在以后创建表时如果没有指定字符集和校验规则,则该表的这两个属性将去自这两个表。 
MySQL数据库目录下面的db.opt是干什么用的? 
MySQL源码: 
- /* Set table default charset, if not set  
 - SYNOPSIS  
 - set_table_default_charset()  
 - create_info Table create information  
 - DESCRIPTION  
 - If the table character set was not given explicitely,  
 - let’s fetch the database default character set and  
 - apply it to the table. */  
 - static void set_table_default_charset(THD *thd,  
 - HA_CREATE_INFO *create_info, char *db)  
 - {  
 - if (!create_info->default_table_charset)  
 - {  
 - HA_CREATE_INFO db_info;  
 - load_db_opt_by_name(thd, db, &db_info);  
 - create_info->default_table_charset= db_info.default_table_charset;  
 - } 
 
  
字符集和字符集校验规则 
创建数据库时指定字符集和字符集校验规则: 
- create database if not exists test default charset utf8 default collate utf8_general_ci; 
 
  
  
  
修改数据库的字符集和字符集校验规则: 
- alter database test default [charset|character set ] latin1 default collate latin1_swedish_ci; 
 
  
创建数据库create database 
- CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name  
 - [create_specification] …  
 - create_specification:  
 - [DEFAULT] CHARACTER SET [=] charset_name  
 - | [DEFAULT] COLLATE [=] collation_name 
 
  
也可以通过alter database修改 
- ALTER {DATABASE | SCHEMA} [db_name]  
 - alter_specification …  
 - alter_specification: 
 -  [DEFAULT] CHARACTER SET [=] charset_name  
 - | [DEFAULT] COLLATE [=] collation_name 
 
  
总结 
1、create database时会自动生成一个文件db.opt,存放的数据库的默认字符集,show create database时显示数据库默认字符集即db.opt中字符集。 
2、这个文件丢失不影响数据库运行,该文件丢失之后新建表时,找不到数据库的默认字符集,就把character_set_server当成数据库的默认字符集,show create database时显示character_set_server字符集。 
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~ 
【编辑推荐】 
    - 网络带宽如何影响 MySQL 性能
 
    - MongoDB数据库误删后的恢复
 
    - 删库不跑路-详解MySQL数据恢复
 
    - 超详细的Oracle数据库索引创建及索引重建变更规范
 
    - 深入浅出MySQL索引的那些事儿
 
 
【责任编辑:庞桂玉 TEL:(010)68476606】
 
            点赞 0                        (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |