1. 程式人生 > >Mysql支持UTF8-mb4

Mysql支持UTF8-mb4

default 加載 name conn ble -h 詳細 們的 運行

感謝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:

技術分享圖片

Mysql支持UTF8-mb4