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

解決 Navicat 還原 PSC 檔案記錄數為 0 的問題

     編輯:MySQL 資料庫相關知識

使用 Navicat 還原 .psc 備份檔時,若出現「物件數正常但記錄數為 0」的情況,通常是因為預設啟用了「使用交易」選項導致部分資料回滾。本文提供實測有效的解決方案。

問題現象

  1. 以 Navicat 連線 MySQL,建立新資料庫 mydb1(字元集 utf8)。
  2. 右鍵資料庫 → 「還原備份」 → 選取 .psc 檔案執行還原。
  3. 完成後發現:673 個物件僅還原 551 個,47,366 筆記錄卻還原 0 筆。

建立資料庫 選取備份檔還原 還原結果記錄數為0

解決方案:調整還原進階選項

  1. 重新執行還原,在「進階」頁籤中:
    • 取消勾選「使用交易」
    • 勾選「遇到錯誤繼續」
  2. 再次執行還原,此時物件數與記錄數均能正常恢復。

進階選項設定 還原成功結果

後續驗證與修復

  1. 對還原後的 mydb1 重新備份,獲得新的 .psc 檔(如 160330103626.psc)。對比發現原備份檔缺少 8 個物件(可能為空表、觸發器或索引),但記錄數完整(47,366 筆),推測缺失物件為空表。
  2. 建立新資料庫 mydb2,使用新產出的 .psc 檔還原,進階選項保持預設(勾選使用交易),結果物件與記錄數完全匹配,確認新備份檔無誤。

重新備份結果 備份檔路徑 第二次還原設定 最終還原成功

核心原因分析

Navicat 預設在單一交易中執行整個還原過程。若備份檔內含有觸發條件約束、外鍵依賴或特定 SQL 模式不相容的語句,交易會整體回滾,導致資料寫入失敗而結構物件仍被建立。關閉「使用交易」並允許「遇到錯誤繼續」可逐條提交,繞過問題語句,最大程度保留資料。

最佳實踐建議

  • 定期對關鍵資料庫執行「還原驗證演練」,確保備份檔可用性。
  • 生產環境建議搭配 mysqldump --single-transaction 產出標準 SQL 腳本,降低工具鎖定風險。
  • 若遭遇類似問題,先嘗試「關閉交易+錯誤繼續」還原,再以還原後的乾淨資料庫重新備份產出新基準檔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved