近期有網友留言,總是喜歡打些語言表情符合,如~👶😛🤓
之前 mysql(Mariadb) 資料庫的字集宣告使用
Character set: utf8
Collation: utf8_general_ci
當遇到這類的「文字」,會無法寫入直接 throw exception
把字集都改成更新的 utf8mb4 即可
花了半小時寫了一支自動轉整個 database 的語法:
https://3wa.tw/mypaper/index.php?uid=shadow&mode=view&id=2079
將內容存成「database_to_utf8mb4.php」,執行方式:
php database_to_utf8mb4.php [資料庫]
一輪跑下來自動就把該資料庫裡所有 table column 有 Character set 全都轉
table 宣告也轉、database 也轉
已知遇到的問題:
1、如果你把 varchar 拿來當 index,會有上限 1000byte 的異常
需先把 index 拿掉才能轉換
2、沒有記下 table column comments 註解,之後有其他站要轉,有空再改~
3、沒有羽山刻的 selectSQL_SAFE execSQL_SAFE 也不能跑 XD,想用的同學再私下跟我要 Code 吧

2022-06-07 補充:
資料庫從 utf8 轉成 utf8mb4 後,在每天的自動備份,看備份檔沒有明顯的變化,跟前幾天一樣。
另外在轉檔前,我曾試著在另一台 windows 裡安裝 mariadb ,但因為備份檔已太大(1.9GB)
無法使用 mysql -u帳號 -p < db_2022_06_06.sql 這樣的指令匯入,在windows作業系統如要匯入
,使用 cmd ,進到命令提示字元,需先切換至 utf8 環境
chcp 65001
然後進入 mysql
mysql -u帳號 -p密碼
進入後,再下指令匯入
source db_2022_06_06.sql
轉成 utf8mb4 後還沒有還原匯入,再找時間試試會不會匯失敗