这期内容当中小编将会给大家带来有关MySQL数据库目录下面的db.opt是干什么用的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

概述

MySQL数据库存放数据目录里的db.opt文件是MySQL建库过程中自动生成的。

细心的朋友可能会发现有时候在MySQL数据库的某些库目录下有个db.opt文件,那这个文件是干什么用的呢?如果你用记事本等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。

db.opt

MySQL的每个数据库目录中有一个文件db.opt,该文件主要 用来存储当前数据库的默认字符集和字符校验规则。

default-character-set=utf8default-collation=utf8_general_ci

该文件中存储的是创建数据库时默认的字符集和字符集校验规则,则该数据库在以后创建表时如果没有指定字符集和校验规则,则该表的这两个属性将去自这两个表。

MySQL数据库目录下面的db.opt是干什么用的?

MySQL源码:

/*Settabledefaultcharset,ifnotsetSYNOPSISset_table_default_charset()create_infoTablecreateinformationDESCRIPTIONIfthetablecharactersetwasnotgivenexplicitely,let’sfetchthedatabasedefaultcharactersetandapplyittothetable.*/staticvoidset_table_default_charset(THD*thd,HA_CREATE_INFO*create_info,char*db){if(!create_info->default_table_charset){HA_CREATE_INFOdb_info;load_db_opt_by_name(thd,db,&db_info);create_info->default_table_charset=db_info.default_table_charset;}

字符集和字符集校验规则

创建数据库时指定字符集和字符集校验规则:

createdatabaseifnotexiststestdefaultcharsetutf8defaultcollateutf8_general_ci;

修改数据库的字符集和字符集校验规则:

alterdatabasetestdefault[charset|characterset]latin1defaultcollatelatin1_swedish_ci;

创建数据库create database

CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name[create_specification]…create_specification:[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collation_name

也可以通过alter database修改

ALTER{DATABASE|SCHEMA}[db_name]alter_specification…alter_specification:[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collation_name

create database时会自动生成一个文件db.opt,存放的数据库的默认字符集,show create database时显示数据库默认字符集即db.opt中字符集。这个文件丢失不影响数据库运行,该文件丢失之后新建表时,找不到数据库的默认字符集,就把character_set_server当成数据库的默认字符集,show create database时显示character_set_server字符集。

上述就是小编为大家分享的MySQL数据库目录下面的db.opt是干什么用的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。