首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 常見錯誤英文原版對照:Access Denied、Can't Connect、Lost Connection 等原因與解決

     編輯:MySQL 資料庫相關知識

官方文件「Common Errors When Using MySQL Programs」中文對照,涵蓋存取被拒、連線失敗、連線中斷、封包過大、資料表滿等高頻錯誤的原因與解決方案。

1. Access Denied (存取被拒)

  • 原因多樣:帳號不存在、密碼錯誤、主機不匹配、權限不足、密碼插件不相容
  • 核心機制:權限系統基於 user@host 三元組匹配
  • 排查:SELECT User, Host, plugin FROM mysql.user;、檢查 FLUSH PRIVILEGES、密碼插件 (caching_sha2_password vs mysql_native_password)

2. Can't Connect to [local] MySQL Server (無法連線)

  • Unix 兩種連線:Socket 檔案 (/tmp/mysql.sock) 或 TCP/IP (port 3306)
  • Socket 較快但僅限本機;TCP/IP 支援遠端
  • Windows 9x/Me 僅支援 TCP/IP;NT/2000/XP/2003 可用 Named Pipe (--enable-named-pipe)
  • 錯誤 2002:服務未啟動、Socket 路徑錯誤、Port 號錯誤、防火牆阻擋
  • 排查:ps xa | grep mysqld / 工作管理員確認進程、netstat -an | grep 3306、mysqladmin ping

3. Lost Connection to MySQL Server During Query (查詢中斷線)

  • 原因:查詢執行超時 (wait_timeout/interactive_timeout)、封包過大 (max_allowed_packet)、伺服器重啟/OOM、網路不穩
  • 解決:調大 max_allowed_packet (如 64M)、調大 wait_timeout、優化慢查詢、檢查伺服器錯誤日誌

4. Packet Too Large (封包過大)

  • 客戶端/伺服端 max_allowed_packet 不一致或過小
  • 大 BLOB/TEXT 插入、大批次 INSERT
  • 解決:兩端同步調大 (如 256M)、分塊傳輸

5. Table Is Full (資料表滿)

  • MyISAM:資料檔達 2GB/4GB 檔案系統限制、磁碟空間不足、myisam_max_sort_file_size 限制
  • InnoDB:表空間滿 (ibdata1 或 .ibd)、磁碟空間不足
  • 解決:啟用 innodb_file_per_table、擴充磁碟、清理空間、OPTIMIZE TABLE

6. Commands Out of Sync (指令序列錯誤)

  • 呼叫順序錯誤:如 mysql_use_result 後未 mysql_free_result 就執行下一查詢
  • 多重陳述式 (CLIENT_MULTI_STATEMENTS) 處理不當

7. 忽略使用者/主機表

  • --skip-grant-tables 啟動繞過權限 (僅緊急救援用)

結語

官方錯誤訊息雖為英文,但錯誤碼 (1045, 2002, 2006, 2013...) 具備精確語意。建立 錯誤碼 → 原因 → 排查步驟 → 解決方案 的知識庫,能大幅縮短故障恢復時間 (MTTR)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved