LOAD DATA INFILE エラー コード : 13
リモート サーバーで LOAD DATA INFILE コマンドを使用して MySQL テーブルにデータをロードしようとしたとき、エラー コード: 13: 「'/httpdocs/.../.../testFile.csv' の統計を取得できません (エラーコード: 2)」が発生する場合があります。これは、MySQL が指定されたファイルにアクセスできないことを示しています。
次の手順は、この問題の解決に役立ちます。
1.十分な権限を付与
データベース ユーザーがファイルにアクセスするための十分な権限を持っていることを確認します。ユーザーに SELECT、FILE、LOAD DATA 権限を付与することを検討してください:
GRANT SELECT, FILE, LOAD DATA ON *.* TO 'userName'@'%'
2.ファイルとフォルダーのアクセス許可を設定する
ファイルとフォルダーのアクセス許可が MySQL にファイルの読み取りを許可していることを確認します。ファイルのアクセス許可を 644 (rw-r--r--)、フォルダーのアクセス許可を 755 (rwxr-xr-x) に設定します。
<code class="bash">chmod 644 /httpdocs/.../.../testFile.csv chmod 755 /httpdocs/.../.../</code>
3. Apparmor の設定を確認する
Ubuntu システムでは、Apparmor は MySQL のファイルへのアクセスを制限することができます。 MySQL が「tmp」ディレクトリからファイルを読み取れるようにするには、次の行を /etc/apparmor.d/usr.sbin.mysqld に追加します:
/tmp/** rwk
Reload Apparmor using:
<code class="bash">sudo /etc/init.d/apparmor reload</code>
4. SELinux を無効にする
SELinux (セキュリティ強化された Linux) を使用している場合は、ファイル アクセスも制限される可能性があります。一時的に無効にして、LOAD DATA INFILE コマンドを再実行してみてください。具体的な手順については、SELinux ドキュメントを参照してください。
追加メモ:
以上がLOAD DATA INFILE を使用すると MySQL がファイルにアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。