https://www.linuxidc.com/Linu...mysql
爲了應對無線互聯網的機遇和挑戰、避免 emoji 表情符號帶來的問題、
MySQL 數據庫建議都提早採用 utf8mb4 字符集.linux
總結一下:sql
要完成修改,須要三個步驟來解決:數據庫
(1):修改mysql數據庫的編碼爲uft8mb4 (第一部分) (2):修改數據表的編碼爲utf8mb4 (第二部分) (3):修改鏈接數據庫的鏈接代碼 (第三部分)
與linux系統不一樣,在 MacOS中 將 default-character-set
設置爲 utf8mb4
仍是有點tricky的。macos
/########################## 第一部分 ########################this
網上搜到的答案通常都說修改 my.cnf 就能夠了。 可是! 在 MacOS 裏,你找不到mysql的 my.cnf 文件, 由於 macos裏面 mysql 一開始就沒有這麼一個 my.cnf 文件。
那麼咱們怎麼作呢? 編碼
在terminal裏,輸入:rest
mysql --help
或 mysql --help | grep cnf
能夠看到這樣的描述:code
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
可是在 MacOS 裏, 你根本找不到這些 .cnf 文件。那麼咱們首先要創造它們。
首先找到 my-default.cnf
文件, 輸入:server
sudo find / -name my-default.cnf
(這一行的意思是,在 /
目錄裏找到 name 爲 my-default.cnf
的路徑)
caoda1@CaoDas-MBP:~/Documents/news_robot$ sudo find / -name my-default.cnf Password: /usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf
而後將找到的文件拷貝到 /etc/
:sudo cp /usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf /etc/
而後在/etc/my-default.cnf
裏,修改/添加以下:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
添加或修改完成後,保存退出,而後改文件名:sudo mv /etc/my-default.cnf /etc/my.cnf
而後找到mysql安裝在哪裏,接着重啓 MySQL:
caoda1@CaoDas-MBP:~/Documents/news_robot$ which mysql /usr/local/bin/mysql caoda1@CaoDas-MBP:~/Documents/news_robot$ sudo /usr/local/bin/mysql.server restart Shutting down MySQL ..... SUCCESS! Starting MySQL . SUCCESS!
而後, 重啓 MySQL Server、檢查字符集
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; mysql> show variables like "character_set_database";
/########################## 第二部分 ########################
我省略了一步:(可是這一步很重要!!!!)
修改 database、table和column字符集
For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is
just an example for aVARCHAR
column.)
這就是說 你建立的 database,table, column 也要改爲 utf8mb4; 我是直接刪了全部之前的東西,而後從零開始建立,因此省略了這一步。結果失敗了。
/########################## 第三部分 ########################
還要在code裏面改一下數據庫的連接代碼(注意:charset=utf8mb4):
mysql://root:@127.0.0.1:3306/weibo?charset=utf8mb4