当前位置: 首页 > 科技观察

MySQL数据库目录下的db.opt有什么用?

时间:2023-03-12 20:08:12 科技观察

概述MySQL数据库存储数据目录下的db.opt文件是MySQL建库过程中自动生成的。细心的朋友可能会发现,有时候在MySQL数据库的一些库目录下会有一个db.opt文件,那么这个文件是干什么用的呢?如果用记事本等编辑器打开,内容很简单,用来记录库默认的字符集编码和字符集排序规则。db.opt在MySQL的每个数据库目录下都有一个文件db.opt,主要用来存放当前数据库的默认字符集和字符校验规则。default-character-set=utf8default-collat??ion=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;}字符集和字符集校验规则创建数据库时指定字符集和字符集校验规则:createdatabaseifnotexiststestdefaultcharsetutf8defaultcollat??eutf8_general_ci;修改数据库字符集和字符集校验规则:alterdatabasetestdefault[charset|characterset]latin1defaultcollat??elatin1_swedish_ci;createdatabasecreatedatabaseCREATE{DATABASE|SCHEMA}[IFNOTEXISTS]db_name[create_specification]...create_specification:[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collat??ion_name也可以通过alterdatabaseALTER{DATABASE|SCHEMA修改}[数据库名称]alter_specification...alter_specification:[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collat??ion_name总结1.创建数据库时,会自动生成一个文件db.opt,存储数据库的默认字符集,并且在showcreatedatabase的时候会显示数据库默认的字符集是db.opt中的字符集2.这个文件丢失不影响数据库的运行。文件丢失后新建表时,找不到数据库的默认字符集,所以使用character_set_server作为数据库的默认字符集,showcreatedatabase中显示character_set_server字符集。更多devops和DBA内容稍后会分享,感兴趣的朋友可以关注~