首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 常見問題排查:服務啟動失敗、performance_schema 缺失、中文亂碼

     編輯:MySQL 綜合教學

MySQL 常見問題排查:服務啟動失敗、performance_schema 缺失、中文亂碼

整理實務中遇到的三大 MySQL 經典問題,提供標準化解決方案與預防建議。

問題一:首次啟動服務失敗,無錯誤訊息

診斷方法

mysqld --console  # 前景模式啟動,直接輸出錯誤到控制台

常見原因與解決

  1. data 目錄內容不正確 (最常見)
    • 方案 A:執行初始化 mysqld --initialize (5.7+) 或 mysqld --initialize-insecure (產生空密碼)
    • 方案 B:從 MySQL 5.6 壓縮包複製完整 data 目錄覆蓋
  2. 操作前務必先停止服務:net stop mysql

問題二:缺少 performance_schema.session 系統表導致各類錯誤

解決指令

mysql_upgrade -u root -p
# 或強制升級
mysql_upgrade -u root -p --force

執行後重啟服務 (Windows: 服務管理介面重啟 / Linux: systemctl restart mysqld)

問題三:插入中文報錯 Error Code: 1366. Incorrect string value

根本原因

資料庫/資料表/連線字元集不一致,導致 UTF-8 字元無法正確寫入。

完整解決步驟 (依優先順序)

  1. 設定伺服器預設字元集
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    修改 my.ini 後重啟服務,用 \s 驗證 Server characterset: utf8
  2. 建立資料庫時指定字元集
    CREATE DATABASE mydb CHARACTER SET 'utf8';
    此舉確保新資料庫預設 UTF-8,後續建表自動繼承
  3. 建表時指定字元集 (補救既有庫)
    CREATE TABLE mytable (
      id INT, name VARCHAR(50)
    ) CHARACTER SET 'utf8';
    或修改既有表:ALTER TABLE mytable CONVERT TO CHARACTER SET utf8;
  4. 連線層級設定 (程式碼中)
    $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");

最佳實踐建議

  • 安裝階段即完成上述 1-3 步驟,避免後續麻煩
  • 統一使用 utf8mb4 (支援完整 Unicode 包含 Emoji) 替代 utf8
  • 應用程式連線池配置 characterEncoding=utf8mb4 (JDBC) / charset=utf8mb4 (PDO)
  • 定期用 SHOW VARIABLES LIKE 'character%'; 檢查一致性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved