MySQL資料庫無法通過 utf8mb4 連線的解決方式
環境:阿里雲 centos 6.5 mysql 5.6 python
問題:通過uri裡面設定 charset=utf8mb4 連線資料庫時,發生問題
Character set ‘utf8mb4’ is not a compiled character set and is not specified in the ‘/path/mysql/charsets/Index.xml’ file
經排查,是使用的mysql-devel 的版本是 5.1.73,太老導致。可通過如下命令查詢其版本
rpm -qa | grep mysql
於是將其解除安裝,重灌,發現 阿里雲的預設源重灌還是 5.1.73 的老版本,於是加入官方源
安裝完之後,執行發生“libmysqlcilent_r.so.16 No such file or directory”這個錯誤。
查了一下,現在有的庫檔案是 libmysqlcilent_r.so.18,網上的一種解決方法是用軟連結,把 18的版本變為 16,但我並不認為這是個好方法。
於是重灌 python 的 mysqlclient庫,結果,之前我用的是阿里的映象,重灌之後還是老問題,懷疑是cache導致安裝的版本有誤。於是把映象的引用刪除之後,重灌ok了!也有一個方法,就是重灌的時候,用
pip install mysqlclient –no-cache-dir
來禁止使用cache,重新編譯新的。
然後一切正常,資料庫可以儲存emoji影象了。
這裡有個注意點,mysql的varchar型別,一般在utf8下面,最長支援到255,但如果是utf8mb4,只有191了。
鑑於emoji的普及,資料庫預設應該都轉為 utf8mb4 編碼,網上有篇不錯的分享,以後有空了,翻譯一下,當二道販子。