Saya menggunakan kueri MySQL sepanjang waktu dalam PHP, tetapi ketika saya mencoba
LOAD DATA INFILE
Saya mendapatkan kesalahan berikut
# 1045 - Akses ditolak untuk pengguna 'user' @ 'localhost' (menggunakan kata sandi: YA)
Adakah yang tahu apa artinya ini?
--local-infile
opsi tersebut.Saya punya masalah ini. Saya mencari-cari dan tidak menemukan jawaban yang memuaskan. Di bawah ini saya rangkum hasil pencarian saya.
Kesalahan akses ditolak dapat berarti bahwa:
GRANT FILE on *.* to user@'localhost'
); atau,sumber
Coba gunakan perintah ini:
Ini seharusnya berhasil. Ini berhasil dalam kasus saya.
sumber
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Pastikan pengguna MySQL Anda memiliki hak istimewa FILE yang diberikan.
Jika Anda menggunakan hosting web bersama, ada kemungkinan ini diblokir oleh penyedia hosting Anda.
sumber
String dari Lyon memberi saya tip yang sangat bagus: Di Windows, kita perlu menggunakan slahes dan bukan garis miring terbalik. Kode ini berfungsi untuk saya:
sumber
Saya mengalami masalah yang sama, dan menyelesaikannya dengan mengikuti langkah-langkah berikut:
Untuk poin ke-3 ini, Anda dapat merujuk ke: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
IKLAN
sumber
Ini juga terjadi pada saya dan meskipun telah mengikuti semua langkah yang dijelaskan oleh Yamir di posnya, saya tidak dapat membuatnya berhasil.
File tersebut berada di /tmp/test.csv dengan 777 izin. Pengguna MySQL memiliki izin file, opsi LOKAL tidak diizinkan oleh versi MySQL saya, jadi saya macet.
Akhirnya saya bisa menyelesaikan masalah dengan menjalankan:
sumber
Saya menemukan yang mudah jika Anda menggunakan baris perintah
Masuk sebagai
mysql -u[username] -p[password] --local-infile
kemudian
SET GLOBAL local_infile = 1;
pilih database Anda dengan
use [db_name]
dan akhirnya
LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
sumber
SET GLOBAL local_infile = 1;
tampaknya tidak berfungsi di RDS, tetapi tanpa itu--local-infile
triknya berhasilSaya menemukan memuat tabel MySQL bisa cepat dan tidak menyakitkan (saya menggunakan skrip manajer model python / Django):
1) buat tabel dengan semua kolom VARCHAR (n) NULL misalnya:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) hapus header (baris pertama) dari csv, lalu muat (jika Anda lupa LOKAL, Anda akan mendapatkan "# 1045 - Akses ditolak untuk pengguna 'user' @ 'localhost' (menggunakan sandi: YES)"):
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' -> ; Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3) mengubah kolom:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voila!
sumber
Itu mungkin berarti bahwa kata sandi yang Anda berikan
'user'@'localhost'
salah.sumber