|
MySQL字符集設(shè)置—MySQL數(shù)據(jù)庫亂碼問題 需要修改my.ini( my.cnf) [client] default-character-set=utf8mb4 [mysqld] character-set-client-handshake = false character_set_server = utf8mb4 collation_server = utf8mb4_bin init_connect='set names utf8mb4' [mysqldump] character_set_client=utf8mb4 [mysql] default-character-set=utf8mb4 查看是否修改成功的方法: Mysql執(zhí)行: show variables like 'version'; show variables like '%character%'; show variables like 'collation%'; 結(jié)果如下圖
大家觀察看,charater_set_system還是utf8,show variables 看下,但是它應是個只讀變量。這個是系統(tǒng)的字符集,修改不了。所以,這個值不可配置,是硬編碼的,和OS是緊密在一起的,不需要關(guān)注。 查看庫的字符集 語法:show database status from 庫名 like 表名; mysql> show create database shiyan\G*************************** 1. row ***************************
Database: shiyanCreate Database: CREATE DATABASE `shiyan` /*!40100 DEFAULT CHARACTER SET gbk */1 row in set (0.00 sec)4.查看表的字符集 語法:show table status from 庫名 like 表名; mysql> show table status from class_7 like 'test_info'; ![]() 5.查看表中所有列的字符集 語法:show full columns from 表名; mysql> show full columns from test_info;
關(guān)于mysql init_connect的幾個要點總結(jié)init_connect的作用 init_connect通常用于:當一個連接進來時,做一些操作,比如設(shè)置autocommit為0,比如記錄當前連接的ip來源和用戶等信息到一個新表里,當做登陸日志信息 1.設(shè)定字符集:init_connect='set autocommit=0; set names gbk;' 使用init_connect的注意點 1 只有超級賬戶才可以設(shè)置(super_priv權(quán)限) 2 超級賬戶無視init_connect設(shè)置(即init_connect的設(shè)置對來自超級賬戶的連接不生效) 在我們創(chuàng)建mysql數(shù)據(jù)庫的時候我們經(jīng)常會用到這句SQL:CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。 那么這句sql的每一部分分別代表著什么?又有什么意義?在看了網(wǎng)上很多資料后想總結(jié)下。 我們將這句sql劃分為三段:CREATE DATABASE `test` , DEFAULT CHARACTER SET utf8, COLLATE utf8_general_ci。 CREATE DATABASE `test` : 代表的是創(chuàng)建數(shù)據(jù)庫 test。 DEFAULT CHARACTER SET utf8 : 代表的是將該庫的默認編碼格式設(shè)置為utf8格式。 COLLATE utf8_general_ci : 代表的是數(shù)據(jù)庫校對規(guī)則,utf8_bin將字符串中的每一個字符用二進制數(shù)據(jù)存儲,區(qū)分大小寫。utf8_genera_ci不區(qū)分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。utf8_general_cs區(qū)分大小寫,cs為case sensitive的縮寫,即大小寫敏感。 |
|
|