許多開發者在使用 Navicat 這類圖形化工具匯入 SQL 檔案時,都曾遇過這種令人困惑的情況:介面明明顯示 「queries successfully」 或類似的成功訊息,但刷新資料庫列表後,預期的資料表卻空空如也。這篇文章記錄一次真實的排查過程,希望能為遇到相同困境的人提供一個新的思路。
嘗試將先前備份的 easy.sql 匯入新建立的資料庫。操作步驟如下:
easy.sql。多次重試、檢查 SQL 檔案內容(確認包含 CREATE TABLE 與 INSERT 語句)均無效,甚至懷疑是權限或編碼問題,但方向皆不對。
在無奈之下,決定採取較激進的手段:
神奇的一幕發生了:不用再手動執行任何 SQL 檔案,資料表結構與資料竟然完整地出現在新資料庫中!
這極大概率是因為 easy.sql 檔案本身包含了 CREATE DATABASE IF NOT EXISTS `db_name`; 以及 USE `db_name`; 語句,且該 SQL 檔案原本是透過 mysqldump 導出的完整備份。
CREATE DATABASE 與 USE 指令,導致語句在錯隱含的 Schema 下執行,或因權限/事務問題靜默失敗,卻仍回報成功。mysqldump 格式備份設計,能正確處理資料庫建立、切換、鎖表等邏輯。mysql -u root -p db_name < easy.sql 避免 GUI 工具的解析差異。CREATE DATABASE 與 USE,決定是先建庫再匯入,還是直接匯入。COMMIT;。工具雖好,懂原理才不踩坑。下次遇到「成功卻無資料」,不妨先看看 SQL 裡有沒有 CREATE DATABASE,試試「還原」或命令列,甚至像文中這樣「重建同名庫」這招非常規手段 —— 有時候,MySQL 已經在背後幫你把活幹了。