Mysql支援UTF8-mb4
感謝https://www.2cto.com/database/201405/303550.html分享
以下是原文摘抄
廢話不多說,相信看到這裡的看客已經看過很多配置檔案的設定方法。但是問題還是沒有解決。本文就詳細記錄一下我的解決方法吧。
我的環境:mysql5.6+python2.7.3+MySQLdb1.2.4
1、桌面上右擊 計算機,選擇“管理”, 選擇“服務和應用程式”---“服務”, 在裡面找到MySQL56的服務。
2、右擊 MySQL服務,檢視“屬性”:往後拖一下,找到—default-file下圖中畫框部分,這裡指明瞭MySQL啟動的時候要載入的配置檔案.
3、 找到該路徑下的配置檔案,進行修改。
4、 具體修改內容:
文字:
[client]
port=3306
default-character-set=utf8mb4
[mysql]
port=3306
default-character-set=utf8mb4
[mysqld]
port=3306
character-set-client-handshake= FALSE
character-set-server= utf8mb4
collation-server= utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
5、 然後重啟MySQL56服務。
6、 在執行裡面,找到並開啟mysql command line,使用以下命令檢視是否生效。
SHOWVARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE'collation%';
看到下面這個畫面就說明生效了:
7、以為這樣就完了嗎?No,即使是這樣我們無論是在mysql workbench還是通過python+mysqldb建立的utf8mb4資料庫其實還是utf-8的,也正因如此,我們的emoj字元才一直不能插入到資料庫中。
即使建立的資料庫是utf8mb4的,我們看到這個資料庫還是utf8的。
所以我們還需要繼續實驗,仔細看修改配置檔案裡面有一句:init_connect='SETNAMES utf8mb4',那我可以拿來用到資料庫中。
果然,發現加上“SET NAMES utf8mb4;”這句以後,資料庫變成了utf8mb4.:
這樣可以再推廣應用到程式碼裡面。見8.
8、 在python + mysqldb 或者 python +sqlalchemy兩種模式都適用。
建立連線以後,遊標物件首先要執行一遍“SET NAMES utf8mb4;”這樣就能保證資料庫連線是以utf8mb4編碼格式連線,資料庫也就變成utf8mb4的啦。前面都是鋪墊的內容,如果沒有第8步,前面都是白做的。
Mysql:
Sqlalchemy: