參考資料
https://blog.csdn.net/m0_37754003/article/details/82770252
https://blog.csdn.net/Leycaner/article/details/88189780
方法如下
首先通過 show variables like 'character_set_%';
查看mysql字符集情
默認編碼爲 latin1
然後關閉數據庫
在mysql安裝目錄下找到my.ini文件
在其中添加
1 2 |
|
在[mysqld]
下添加
1 |
|
重啓mysql
就能將mysql數據庫默認編碼改爲utf-8
網上很多資源都是在[mysqld]
下添加
1 |
|
如果這樣改會導致5.7版本mysql無法打開
所以要改爲
1 |
|
注意:改完後,要刪除數據庫中所有數據,才能使用。
注意
在MySQL安裝文件夾下(我的例子爲C:\Program Files\MySQL\MySQL Server 5.7\)編輯my.ini文件(如果沒有該文件,但是有一個my_default.ini的文件的話,可以複製default文件並重命名爲my.ini;如果default也沒有,可以直接創建該文件),在文件中修改/添加下面的內容:
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
1
2
3
4
修改後重啓MySQL服務(計算機右鍵->管理->服務,找到MySQL服務點擊重啓動),使得修改生效。
坑來了:
修改了上述文件後,再次登錄MySQL輸入
SHOW VARIABLES LIKE "%char%";
1
發現其中的一部分變成了utf8,但是還有一部分沒有修改成功。
解決方法:
找到C:\ProgramData\MySQL\MySQL Server 5.7,這下面還有一個my.ini,同樣對這個文件做上述修改,保存並重啓MySQL服務。
再次查看,發現問題解決。
(如果還有部分沒有修改,在上述的文件中增加一條
[mysql]
default-character-set=utf8
1
2
)
對修改默認編碼前的數據庫,只修改配置文件無法影響到,將該庫刪掉重新建立,或者採用下面的指令:
alter database 你的數據庫名字 character set utf8;
1
就可以修改當前數據庫的編碼格式了。
如果在linux下重啓mysql服務的時候出現Job failed to start,在window下重啓失敗,這是因爲你安裝了高版本的mysql(mysql5.5以上),在高版本對字符編碼方式修改的辦法中,在[mysqld]下的修改發生了變化,正確方式如下:
[mysqld]下添加的應該爲:
character-set-server=utf8
collation-server=utf8_general_ci
定位
1、數據庫字段、表、數據庫、mysql的編碼需要設置成utf8mb4
2、數據庫連接設置編碼
show variables like "%char%";
解決
1、設置數據庫
1)修改字段字符集
ALTER TABLE table_name CHANGE column_name VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2)設置表的字符集
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3)設置數據庫的字符集
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
4)修改數據庫應用字符集
找到linux下的mysql位置
$ whereis mysql 找到位置
$ vi my.cnf 【這裏有my.ini,如果只有my-default.ini,則複製一份並命名爲my.ini】
[增加或修改]
[client]
# 客戶端來源數據的默認字符集
default-character-set = utf8mb4
[mysqld]
# 服務端默認字符集
character-set-server=utf8mb4
# 連接層默認字符集
collation-server=utf8mb4_unicode_ci
[mysql]
# 數據庫默認字符集
default-character-set = utf8mb4
$ service mysqld restart 重啓服務即可
示例
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
修改原有的編碼
USE `data_base_2019`;
/**
1、修改表的字符編碼
**/
ALTER TABLE `base_table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
/**
2、修改庫的字符編碼
**/
ALTER DATABASE `data_base_2019` CHARACTER SET = utf8 COLLATE = utf8_general_ci;