處理MySQL資料庫匯入報錯一則
阿新 • • 發佈:2021-08-10
1. 背景
企業組織架構要調整,應用層響應業務需求,自然要波及IT系統核心,資料庫。根據要求:
匯出業務資料庫,為了驗證備份,將備份傳到異機進行恢復測試。
2. 資料庫版本:
Server version: 5.7.33-log MySQL Community Server (GPL)
3. 操作步驟及報錯資訊:
3.1. 使用SCP將生產環境的備份傳到測試伺服器
3.2. 使用mysqldump 匯入備份
mysql -D cap < cap_bak20210810.sql
注:已經在/etc/my.cnf配置相關登入資訊。
匯入資料過程中報錯如下,並中止:
ERROR 1064 (42000) at line 9555: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1' at line 1
4. 排查過程
4.1 懷疑是資料有問題,檢查匯出檔案行9555,沒發現問題
4.2 嘗試其它備份檔案,可以匯入,懷疑備份檔案有問題,對比生產環境上的備份檔案和傳輸到測試環境的備份檔案,直觀發現檔案大小不一樣。
生產環境備份:
[root@financedb-node1 0810]# ls -l cap_bak20210810.sql
-rw-r--r--. 1 root root 2328050956
傳輸到測試環境備份:
[root@financedbapp2 cap]# ls -l cap_bak20210810.sql.old
-rw-r--r-- 1 root root 2257895424 Aug 10 12:33 cap_bak20210810.sql.old
!!!大小不一!!!
4.3 重新傳輸備份檔案,確認備份檔案大小一致之後,嘗試再次匯入備份,成功。
總結:
MySQ報錯程式碼 1064 (42000),為語法錯誤,像這種問題,如果一味深入排查語法,資料問題,會比較耗時,想像一下匯出檔案中上萬,幾十萬記錄,甚至更多,備份文字就上G,操作起來很難。換一種思路,問題解決快很多。