首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

解決 mysqlimport Error 13: Can't get stat of 問題完整指南

     編輯:MySQL 綜合教學

在使用 mysqlimport 導入數據時,經常會遇到 Error 13: Can't get stat of 錯誤,提示權限被拒。這篇文章詳細記錄了問題排查過程與解決方案,幫助你快速定位並修復此錯誤。

錯誤現場重現

執行以下命令導入備份文件時拋出錯誤:

mysqlimport -uroot -p123 -h127.0.0.1 -P3306 test backup/chen.sql
mysqlimport: Error: 13, Can't get stat of '/usr/local/mysql/data/backup/chen.sql' (Errcode: 2), when using table: chen

乍看之下像是權限問題,使用 perror 13 確認是 OS error code 13: Permission denied。但檢查目錄權限發現 backup/ 目錄屬於 mysql:mysql,權限為 drwxr-xr-x,理應可讀寫。

關鍵突破:對比 LOAD DATA INFILE

為了驗證是否真為權限問題,嘗試直接在 MySQL 客戶端執行 LOAD DATA INFILE:

LOAD DATA INFILE '/usr/local/mysql/backup/chen.sql' INTO TABLE chen;
Query OK, 6 rows affected (0.07 sec)

結果成功導入,說明文件本身可讀、權限無誤,問題出在 mysqlimport 的運行機制上。

根因分析:--local 參數缺失

查閱 man mysqlimport 發現關鍵說明:

--local:指定從客戶端主機讀取數據文件;若省略,則預設從服務端主機讀取(即去 datadir 下尋找)。

原命令未加 --local,導致服務端嘗試讀取 /usr/local/mysql/data/backup/chen.sql(實際不存在),故報錯。

解決方案

在命令末尾加上 --local 即可:

mysqlimport -uroot -p123 -h127.0.0.1 -P3306 test backup/chen.sql --local
test.chen: Records: 6 Deleted: 0 Skipped: 0 Warnings: 0

導入成功,問題徹底解決。

總結

  • mysqlimport 預設在服務端尋找文件,需加 --local 才從客戶端讀取。
  • 遇到 Error 13 先別急著改權限,先確認文件路徑與 --local 參數是否匹配。
  • LOAD DATA INFILE 默認即從客戶端讀取(除非加 LOCAL 關鍵字),行為與 mysqlimport 相反,易混淆。

掌握這一點,以後遇到類似「找不到文件」或「權限被拒」報錯,優先檢查 --local 參數,能省去大量排查時間。

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