MySQL 運行過程中遇到的各類錯誤,往往讓開發者與運維人員頭疼不已。本文精選 31 個高頻錯誤碼,從連線失敗、權限不足、語法錯誤、資料損壞、效能瓶頸等維度,提供錯誤翻譯、根因分析、解決步驟與預防建議,助你快速定位並修復問題。
譯文:無法連線至 localhost 的 MySQL 服務
根因:MySQL 服務未啟動,或負載過高無響應
解決:啟動服務;若啟動失敗檢查 my.ini 配置;高負載時執行 mysqladmin -uroot -p processlist 排查進程
譯文:未知的 MySQL 伺服器主機名
根因:主機名拼寫錯誤或 DNS 解析失敗
解決:檢查應用配置檔(如 config.inc.php)中的 $dbhost 設定
根因:服務未啟動,或 socket 路徑不匹配
解決:啟動服務;Linux 下檢查 socket 路徑,修改連線字串為 localhost:/tmp/mysql.sock
根因:服務異常停止,常見於磁碟空間不足、basedir 路徑錯誤
解決:清理磁碟空間、修正 my.ini 配置後重啟
根因:用戶名/密碼錯誤
解決:核對配置檔中的 $dbuser、$dbpw
根因:用戶缺乏目標資料庫操作權限
解決:授權 GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost' IDENTIFIED BY 'password',執行 FLUSH PRIVILEGES
根因:用戶查詢/更新/連線數超過 mysql.user 表限制
<強解決:修改授權表相應欄位並執行 FLUSH PRIVILEGES;虛擬主機聯繫服務商
根因:連線數超過 max_connections,受 wait_timeout 影響
解決:調大 max_connections、降低 wait_timeout,或進行整體效能優化
根因:MySQL 4.1+ 密碼加密方式變更,舊版客戶端不支援
解決:Windows 用 OLD_PASSWORD() 重設密碼;Linux 升級客戶端並重編譯 PHP
根因:$dbname 錯誤或用戶缺乏 SELECT 權限
解決:修正配置或授權 SELECT 權限
根因:非正常關機、磁碟滿、檔案屬組錯誤導致 MyISAM 表損壞
解決:myisamchk -r 或 phpMyAdmin 修復表(修復前必備份);修正檔案屬組
根因:外掛安裝未升級資料庫、備份還原版本不匹配
解決:補齊遺漏的資料庫升級腳本,或諮詢外掛作者
根因:程式碼與資料庫結構不同步、版本不匹配
解決:同步資料庫結構,確保程式與資料庫版本一致
根因:外掛/修改導致語法錯誤、跨版本匯入含新特性的 SQL
解決:修正語法錯誤;匯出時指定相容格式 mysqldump --default-character-set=latin1 --skip-opt
根因:唯一索引/主鍵衝突、ALTER TABLE 時資料重複、自增值衝突
解決:刪除重複資料保留一條;調整 auto_increment 值;REPAIR TABLE 臨時緩解
根因:重複建立同名物件,常見於重複升級
解決:檢查現有物件屬性,相同則跳過,不同則先刪除再建立
根因:舊版 MySQL 不支援字符集設定
解決:移除 SQL 中的 SET NAMES
根因:查詢過程中連線中斷,常見於慢查詢或資源不足
解決:優化慢查詢、檢查伺服器資源
根因:用戶無資料庫存取權限
解決:確認帳號授權狀態
根因:程式嘗試修改表名但無權限
解決:檢查程式碼,申請 ALTER 權限
根因:資料庫檔案不可讀
解決:檢查檔案權限、磁碟健康度、MySQL 進程狀態
解決:執行 mysqladmin flush-hosts 或重啟 MySQL
解決:確認刪除權限與資料庫存在性
根因:磁碟空間已滿
解決:擴容或清理磁碟
根因:系統記憶體不足或環境損壞
解決:檢查記憶體佔用、考慮擴容、修復系統
根因:上傳檔案超過 max_allowed_packet 限制
解決:修改 my.cnf [mysqld] max_allowed_packet=10M 並重啟
pt-query-digest 分析慢查詢,預防效能型錯誤