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

发表于:2019-8-26 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:波波说运维

  概述
  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字符集。
  
     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号