西数超哥博客
运维经验教程分享

MySQL数据库目录下db.opt文件的作用

   细心的朋友可能会发现有时候在某些库目录下有个 db.opt 文件,那这个文件是干什么用的呢?如果你用vi等编辑器打开看的话,内容很简单,是用来记录该库的默认字符集编码和字符集排序规则用的。也就是说如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。
/*
  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 the table character set was not given explicitly,
    let’s fetch the database default character set and
    apply it to the table.
  */
  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;
  }
}
另外要说明的是,如果你是通过alter databases(schema) 命令更改的数据库默认属性,那么现有的表的默认字符集和排序规则不受影响。
通过创建数据库指定数据库的默认字符集和排序规则:
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 {DATABASE | SCHEMA} db_name
    UPGRADE DATA DIRECTORY NAME
alter_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

转载请注明:西数超哥博客www.ysidc.top» MySQL数据库目录下db.opt文件的作用

https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top

赞(0)
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除。本站原创内容未经允许不得转载:西数超哥博客 » MySQL数据库目录下db.opt文件的作用