Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?

Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 20:21:02633semak imbas

Why Can't MySQL Access My File When Using LOAD DATA INFILE?

MUAT DATA INFILE Kod Ralat : 13

Apabila cuba memuatkan data ke dalam jadual MySQL menggunakan arahan LOAD DATA INFILE pada pelayan jauh , anda mungkin menghadapi Kod Ralat : 13: "Tidak boleh mendapatkan stat '/httpdocs/.../.../testFile.csv' (Errcode: 2)". Ini menunjukkan bahawa MySQL tidak dapat mengakses fail yang ditentukan.

Langkah berikut boleh membantu menyelesaikan isu ini:

1. Berikan Keistimewaan yang Mencukupi

Pastikan bahawa pengguna pangkalan data mempunyai keistimewaan yang mencukupi untuk mengakses fail. Pertimbangkan untuk memberikan kebenaran SELECT, FILE dan LOAD DATA kepada pengguna:

GRANT SELECT, FILE, LOAD DATA ON *.* TO 'userName'@'%'

2. Tetapkan Kebenaran Fail dan Folder

Pastikan kebenaran fail dan folder membenarkan MySQL membaca fail. Tetapkan kebenaran fail kepada 644 (rw-r--r--) dan kebenaran folder kepada 755 (rwxr-xr-x):

<code class="bash">chmod 644 /httpdocs/.../.../testFile.csv
chmod 755 /httpdocs/.../.../</code>

3. Semak Tetapan Apparmor

Pada sistem Ubuntu, Apparmor boleh menyekat akses MySQL kepada fail. Untuk membenarkan MySQL membaca fail daripada direktori "tmp", tambahkan baris berikut pada /etc/apparmor.d/usr.sbin.mysqld:

/tmp/** rwk

Muat Semula Apparmor menggunakan:

<code class="bash">sudo /etc/init.d/apparmor reload</code>

4. Lumpuhkan SELinux

Jika menggunakan SELinux (Security-Enhanced Linux), ia juga boleh menyekat akses fail. Cuba lumpuhkannya buat sementara waktu dan jalankan semula arahan LOAD DATA INFILE. Rujuk dokumentasi SELinux anda untuk mendapatkan arahan khusus.

Nota Tambahan:

  • Pastikan bahawa laluan fail yang dinyatakan dalam pernyataan LOAD DATA INFILE adalah betul dan boleh diakses oleh MySQL .
  • Pertimbangkan menggunakan alat import data seperti mysqlimport atau mysql.connector untuk mengimport data sebaliknya.

Atas ialah kandungan terperinci Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn