[数据库] db文件怎么修改_详解MySQL数据库的db.opt文件含义及作用

496 0
Honkers 2026-3-5 09:17:55 来自手机 | 显示全部楼层 |阅读模式

概述

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

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


db.opt

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

  1. default-character-set=utf8default-collation=utf8_general_ci
复制代码

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

MySQL源码:

  1. /* Set table default charset, if not setSYNOPSISset_table_default_charset()create_info Table create informationDESCRIPTIONIf the table character set was not given explicitely,let’s fetch the database default character set andapply 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;}
复制代码

字符集和字符集校验规则

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

  1. create database if not exists test default charset utf8 default collate utf8_general_ci;
复制代码

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

  1. alter database test default [charset|character set ] latin1 default collate latin1_swedish_ci;
复制代码

创建数据库create database

  1. CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[create_specification] …create_specification:[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name
复制代码

也可以通过alter database修改

  1. 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方面的内容,感兴趣的朋友可以关注下~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行