MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

发表于:2018-7-02 16:30

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

 作者:suoning    来源:博客园

分享:
  三、字符集
  对于新手来说,字符集乱码问题无疑是头痛的问题,小编就带你不在头痛,从此幸福。
  1、字符集简介:
  字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。简单的说,字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASC2,MySQL数据库字符集包括字符集和校对规则两个概念,字符集是定义数据库里面的内容字符串的存储方式,而校对规则是定义比较字符串的方式。
  建议:中英文环境选择utf8
  2、查看设置字符集
  # 查看MySQL字符集设置情况
  show variables like 'character_set%';
  # 查看库的字符集
  show create database db;
  # 查看表的字符集
  show create table db_tb\G
  # 查询所有
  show collation;
  # 设置表的字符集
  set tables utf8;
  show create database nick_defailt\G            #查看nick_defailt库字符集
  mysql -uroot -p -e "SHOW CHARACTER SET;"
  show variables like 'character_set%';
  mysql> show variables like 'character_set%';
  +-----------------------------------------+------------------------------------------------------------+
  | Variable_name            | Value                                |
  +----------------------------------------+-------------------------------------------------------------+
  | character_set_client      | utf8                                   |
  | character_set_connection  | utf8                                   |
  | character_set_database   | utf8                                   |
  | character_set_filesystem   | binary                                 |
  | character_set_results     | utf8                                   |
  | character_set_server      | utf8                                   |
  | character_set_system     | utf8                                   |
  | character_sets_dir        | /usr/local/mysql/share/mysql/charsets/     |
  +----------------------------------------+--------------------------------------------------------------+
  8 rows in set (0.00 sec)
  mysql> show create database nick_defailt \G
  *************************** 1. row ***************************
  Database: data
  Create Database: CREATE DATABASE `data` /*!40100 DEFAULT CHARACTER SET utf8 */
  1 row in set (0.00 sec)
  
  3、MySQL数据乱码及解决方法
  1>    系统方面
  cat /etc/sysconfig/i18n
  LANG="zh_CN.UTF-8"
  2>    客户端(程序),调整字符集为latin1。
  mysql> set names latin1;        #临时生效
  Query OK, 0 rows affected (0.00 sec)
  #更改my.cnf客户端模块的参数,实现set name latin1 的效果,并且永久生效。
  [client]
  default-character-set=latin1
  #无需重启服务,退出登录就生效,相当于set name latin1。
  3>    服务端,更改my.cnf参数
  [mysqld]
  default-character-set=latin1        #适合5.1及以前版本
  character-set-server=latin1         #适合5.5
  4>    库、表、程序
  #建表指定utf8字符集
  mysql> create database nick_defailtsss DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  Query OK, 1 row affected (0.00 sec)

  4、将utf8字符集修改成GBK字符集的实际过程
  1>    导出表结构
  #以utf8格式导出
  mysqldump -uroot -p --default-character-set=utf8 -d nick_defailt>alltable.sql
  --default-character-set=gbk        #表示已GBK字符集连接 –d 只表示表结构
  2>    编辑alltable.sql 将utf8改成gbk。
  3>    确保数据库不在更新,导出所有数据
  mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=utf8 nick_defailt>alldata.sql
  4>    打开alldata.sql将set name utf8 修改成 set names gbk(或者修改系统的服务端和客户端)
  5>    建库
  create database oldsuo default charset gbk;
  6>    创建表,执行alltable.sql
  mysql -uroot -p oldsuo <alltable.sql
  7>    导入数据
  mysql -uroot -p oldsuo <alltable.sql

  四、存储引擎
  MySQL最常用存储引擎Myisam和Innodb。mysql 5.5.5以后默认存储引擎为Innodb。
  MySQL的每种引擎在MySQL里是通过插件的方式使用的,MySQL可以支持多种存储引擎。
  建议:使用 Innodb引擎,因为支持回滚,后续博客会讲。
  1、引擎对应系统文件
  1)    MyISAM引擎系统库表对应文件
  [root@mysql 3306]# ll /data/3306/data/mysql/
  -rw-rw----. 1 mysql mysql  10630 10月 31 16:05 user.frm            #保存表的定义
  -rw-rw----. 1 mysql mysql   1140 10月 31 18:40 user.MYD            #数据文件
  -rw-rw----. 1 mysql mysql   2048 10月 31 18:40 user.MYI            #索引文件
  [root@mysql 3306]# file data/mysql/user.frm
  data/mysql/user.frm: MySQL table definition file Version 9
  [root@mysql 3306]# file data/mysql/user.MYD
  data/mysql/user.MYD: DBase 3 data file (167514107 records)
  [root@mysql 3306]# file data/mysql/user.MYI
  data/mysql/user.MYI: MySQL MISAM compressed data file Version 1
  2)    InnoDB引擎
  [root@mysql 3306]# ll data/
  -rw-rw----. 1 mysql mysql 134217728 10月 31 20:05 ibdata1

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
32/3<123>
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号