MacOS: 如何設置 MySQL 數據庫採用 utf8mb4 字符集

https://www.linuxidc.com/Linu...

爲了應對無線互聯網的機遇和挑戰、避免 emoji 表情符號帶來的問題、
MySQL 數據庫建議都提前採用 utf8mb4 字符集.

總結一下:

要完成修改,需要三個步驟來解決:

    (1):修改mysql數據庫的編碼爲uft8mb4 (第一部分)

    (2):修改數據表的編碼爲utf8mb4   (第二部分)

    (3):修改連接數據庫的連接代碼   (第三部分)

與linux系統不同,在 MacOS中 將 default-character-set 設置爲 utf8mb4 還是有點tricky的。

/########################## 第一部分 ########################

網上搜到的答案一般都說修改 my.cnf 就可以了。 但是! 在 MacOS 裏,你找不到mysql的 my.cnf 文件, 因爲 macos裏面 mysql 一開始就沒有這麼一個 my.cnf 文件。
那麼我們怎麼做呢?

在terminal裏,輸入:

mysql --help
mysql --help | grep cnf
可以看到這樣的描述:

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文件, 輸入:

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 a VARCHAR column.)

這就是說 你創建的 database,table, column 也要改成 utf8mb4; 我是直接刪了所有以前的東西,然後從零開始創建,所以省略了這一步。結果失敗了。

/########################## 第三部分 ########################

還要在code裏面改一下數據庫的鏈接代碼(注意:charset=utf8mb4):

mysql://root:@127.0.0.1:3306/weibo?charset=utf8mb4


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章