国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL架構優化之字符集

2024-07-24 12:34:49
字體:
來源:轉載
供稿:網友
  MySQL應用于大中小企業當中,字符集標準化也是MySQL架構優化中重要的一部分。通常建議中英文混合環境建議選擇utf8字符集。
  1.操作系統Linux cat /etc/sysconfig/i18n  => LANG="en_US.UTF-8"
  2.MySQL客戶端 cat /etc/my.cnf => [client] default-character-set=utf8
  3.MySQL服務端 cat /etc/my.cnf => [mysqld] character-set-server=utf8 collation-server=utf8_bin
  4.庫、表字符集一致 默認庫、表字符集與MySQL服務端保持一致;所以,默認庫、表字符集均為utf8
  5.程序 選擇統一的utf8程序安裝包
 
  1.操作系統Linux字符集
  [root@db12cvm1 ~]# cat /etc/sysconfig/i18n
  LANG="en_US.UTF-8"
  SYSFONT="latarcyrheb-sun16"
 
  2.MySQL客戶端字符集
  [root@db12cvm1 ~]# cat /etc/my.cnf
  [client]
  default-character-set=utf8
 
  3.MySQL服務端字符集
  [root@db12cvm1 ~]# cat /etc/my.cnf
  [mysqld]
  character-set-server=utf8
  collation-server=utf8_bin
 
  4.庫、表字符集一致 默認庫、表字符集與MySQL服務端保持一致
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | test               |
  +--------------------+
  4 rows in set (0.00 sec)
 
  mysql> create database dbadoudou;
  Query OK, 1 row affected (0.00 sec)
 
  mysql> show create database dbadoudou/G;
  *************************** 1. row ***************************
         Database: dbadoudou
  Create Database: CREATE DATABASE `dbadoudou` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */
  1 row in set (0.00 sec)
 
  ERROR:
  No query specified
  ## DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_bin and [mysqld] character-set-server=utf8
  ## collation-server=utf8_bin the same
 
  mysql> use dbadoudou;
  Database changed
  mysql> create table dbadoudou
      -> (
      -> id int(4) not null auto_increment,
      -> name char(20) not null,
      -> primary key (id)
      -> );
  Query OK, 0 rows affected (4.36 sec)
 
  mysql> show create table dbadoudou;
  +-----------
 
  +------------------------------------------------------------------------------------------------------
 
  -------------------------------------------------------------------------------------+
  | Table     | Create Table                                                                              
 
                                                                                                |
  +-----------
 
  +------------------------------------------------------------------------------------------------------
 
  -------------------------------------------------------------------------------------+
  | dbadoudou | CREATE TABLE `dbadoudou` (
    `id` int(4) NOT NULL AUTO_INCREMENT,
    `name` char(20) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
  +-----------
 
  +------------------------------------------------------------------------------------------------------
 
  -------------------------------------------------------------------------------------+
  1 row in set (0.00 sec)
 
  ## TABLE DEFAULT CHARSET=utf8 COLLATE=utf8_bin AND [mysqld] character-set-server=utf8
  ## collation-server=utf8_bin the same
 
  mysql> insert into dbadoudou (name) values('dbadoudou'),('ocmxiaoyu'),('ocmdream');
  ERROR 1665 (HY000): Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT =
 
  STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited
 
  to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
  ## CAUSE: ERROR 1665 (HY000)  SOLUTION: SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
 
  mysql> show global variables like 'binlog_format';
  +---------------+-----------+
  | Variable_name | Value     |
  +---------------+-----------+
  | binlog_format | STATEMENT |
  +---------------+-----------+
  1 row in set (0.00 sec)
  mysql> SELECT @@session.tx_isolation, @@global.tx_isolation;
  +------------------------+-----------------------+
  | @@session.tx_isolation | @@global.tx_isolation |
  +------------------------+-----------------------+
  | READ-COMMITTED         | READ-COMMITTED        |
  +------------------------+-----------------------+
  1 row in set (0.00 sec)
  mysql> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
  Query OK, 0 rows affected (0.00 sec)
 
  mysql> SELECT @@session.tx_isolation, @@global.tx_isolation;
  +------------------------+-----------------------+
  | @@session.tx_isolation | @@global.tx_isolation |
  +------------------------+-----------------------+
  | REPEATABLE-READ        | READ-COMMITTED        |
  +------------------------+-----------------------+
  1 row in set (0.00 sec)
  mysql> insert into dbadoudou (name) values('dbadoudou'),('ocmxiaoyu'),('ocmdream');
  Query OK, 3 rows affected (0.01 sec)
  Records: 3  Duplicates: 0  Warnings: 0
 
  mysql> select * from dbadoudou;
  +----+-----------+
  | id | name      |
  +----+-----------+
  |  1 | dbadoudou |
  |  2 | ocmxiaoyu |
  |  3 | ocmdream  |
  +----+-----------+
  3 rows in set (0.00 sec)
  ## reference:MOS (文檔 ID 1433907.1)
 
  5.處理MySQL亂碼
  上面講到字符集要標準化保持一致。如果出現不一致,怎么解決亂碼問題呢?
  臨時解決:
  set names utf8;
  永久解決:
  vi /etc/my.cnf
  [mysqld]
  character-set-server=utf8
  collation-server=utf8_bi

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 招远市| 土默特左旗| 咸阳市| 板桥市| 阳朔县| 阜新市| 博罗县| 灵丘县| 弥渡县| 辽阳县| 博野县| 康马县| 会理县| 天水市| 观塘区| 民勤县| 民县| 铅山县| 深泽县| 大埔县| 黔东| 剑阁县| 汝州市| 阿克苏市| 井陉县| 成武县| 中山市| 曲周县| 潞西市| 潼关县| 密云县| 永春县| 广州市| 金堂县| 射洪县| 仁布县| 新河县| 皋兰县| 永宁县| 兴安盟| 清河县|