整理實務中遇到的三大 MySQL 經典問題,提供標準化解決方案與預防建議。
mysqld --console # 前景模式啟動,直接輸出錯誤到控制台
mysqld --initialize (5.7+) 或 mysqld --initialize-insecure (產生空密碼)data 目錄覆蓋net stop mysqlmysql_upgrade -u root -p
# 或強制升級
mysql_upgrade -u root -p --force
執行後重啟服務 (Windows: 服務管理介面重啟 / Linux: systemctl restart mysqld)
Error Code: 1366. Incorrect string value資料庫/資料表/連線字元集不一致,導致 UTF-8 字元無法正確寫入。
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
修改 my.ini 後重啟服務,用 \s 驗證 Server characterset: utf8CREATE DATABASE mydb CHARACTER SET 'utf8';
此舉確保新資料庫預設 UTF-8,後續建表自動繼承CREATE TABLE mytable (
id INT, name VARCHAR(50)
) CHARACTER SET 'utf8';
或修改既有表:ALTER TABLE mytable CONVERT TO CHARACTER SET utf8;$conn->query("SET NAMES utf8");
# 或分別設定
$conn->query("SET character_set_client = utf8");
$conn->query("SET character_set_results = utf8");
$conn->query("SET character_set_connection = utf8");
utf8mb4 (支援完整 Unicode 包含 Emoji) 替代 utf8characterEncoding=utf8mb4 (JDBC) / charset=utf8mb4 (PDO)SHOW VARIABLES LIKE 'character%'; 檢查一致性