需要修改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執行: show variables like 'version'; show variables like '%character%'; show variables like 'collation%'; 結果如下圖 大家觀察看,charater_set_system還是utf8,show variables 看下,但是它應是個只讀變量。這個是系統的字符集,修改不了。所以,這個值不可配置,是硬編碼的,和OS是緊密在一起的,不需要關注。 查看庫的字符集 語法: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; 關于mysql init_connect的幾個要點總結init_connect的作用 init_connect通常用于:當一個連接進來時,做一些操作,比如設置autocommit為0,比如記錄當前連接的ip來源和用戶等信息到一個新表里,當做登陸日志信息 1.設定字符集: init_connect='set autocommit=0; set names gbk;' 使用init_connect的注意點 1 只有超級賬戶才可以設置(super_priv權限) 2 超級賬戶無視init_connect設置(即init_connect的設置對來自超級賬戶的連接不生效) 在我們創建mysql數據庫的時候我們經常會用到這句SQL:CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。 那么這句sql的每一部分分別代表著什么?又有什么意義?在看了網上很多資料后想總結下。 我們將這句sql劃分為三段:CREATE DATABASE `test` , DEFAULT CHARACTER SET utf8, COLLATE utf8_general_ci。 CREATE DATABASE `test` : 代表的是創建數據庫 test。 DEFAULT CHARACTER SET utf8 : 代表的是將該庫的默認編碼格式設置為utf8格式。 COLLATE utf8_general_ci : 代表的是數據庫校對規則,utf8_bin將字符串中的每一個字符用二進制數據存儲,區分大小寫。utf8_genera_ci不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感。utf8_general_cs區分大小寫,cs為case sensitive的縮寫,即大小寫敏感。 |
|