Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan 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:
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!