Ich benutze ständig MySQL-Abfragen in PHP, aber wenn ich es versuche
LOAD DATA INFILE
Ich erhalte den folgenden Fehler
# 1045 - Zugriff für Benutzer 'Benutzer' @ 'localhost' verweigert (mit Passwort: JA)
Weiß jemand was das bedeutet?
Ich benutze ständig MySQL-Abfragen in PHP, aber wenn ich es versuche
LOAD DATA INFILE
Ich erhalte den folgenden Fehler
# 1045 - Zugriff für Benutzer 'Benutzer' @ 'localhost' verweigert (mit Passwort: JA)
Weiß jemand was das bedeutet?
Ich bin gerade auch auf dieses Problem gestoßen. Ich musste LOCAL
meiner SQL-Anweisung hinzufügen .
Dies führt beispielsweise zu dem Berechtigungsproblem:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
Fügen Sie LOCAL
Ihrer Erklärung hinzu, und das Problem mit den Berechtigungen sollte behoben sein. Wie so:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
Option aufrufen .Ich hatte dieses Problem. Ich suchte herum und fand keine zufriedenstellende Antwort. Ich fasse unten die Ergebnisse meiner Suche zusammen.
Der Fehler "Zugriff verweigert" kann Folgendes bedeuten:
GRANT FILE on *.* to user@'localhost'
); oder,quelle
Versuchen Sie es mit diesem Befehl:
Das sollte funktionieren. In meinem Fall hat es funktioniert.
quelle
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Stellen Sie sicher, dass Ihrem MySQL-Benutzer die Berechtigung FILE erteilt wurde.
Wenn Sie ein gemeinsames Webhosting verwenden, besteht die Möglichkeit, dass dies von Ihrem Hosting-Anbieter blockiert wird.
quelle
Die Zeichenfolge aus Lyon gab mir einen sehr guten Tipp: Unter Windows müssen wir Slahes und keine Backslashes verwenden. Dieser Code funktioniert für mich:
quelle
Ich bin auf dasselbe Problem gestoßen und habe es gelöst, indem ich die folgenden Schritte ausgeführt habe:
Zu diesem dritten Punkt verweisen Sie auf: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
ANZEIGE
quelle
Dies passierte mir auch und obwohl ich alle von Yamir in seinem Beitrag beschriebenen Schritte befolgt hatte, konnte ich es nicht zum Laufen bringen.
Die Datei befand sich in /tmp/test.csv mit 777 Berechtigungen. Der MySQL-Benutzer hatte Dateiberechtigungen. Die Option LOCAL war in meiner MySQL-Version nicht zulässig, sodass ich nicht weiterkam.
Endlich konnte ich das Problem lösen, indem ich Folgendes ausführte:
quelle
Ich fand es einfach, wenn Sie die Befehlszeile verwenden
Anmelden als
mysql -u[username] -p[password] --local-infile
dann
SET GLOBAL local_infile = 1;
Wählen Sie Ihre Datenbank mit aus
use [db_name]
und schlussendlich
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;
quelle
SET GLOBAL local_infile = 1;
scheint jedoch in RDS nicht zu funktionieren, aber trotzdem hat das--local-infile
den Trick getanIch habe festgestellt, dass das Laden von MySQL-Tabellen schnell und problemlos sein kann (ich habe Python / Django Model Manager-Skripte verwendet):
1) Erstellen Sie eine Tabelle mit allen Spalten VARCHAR (n) NULL, z.
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) Entfernen Sie die Header (erste Zeile) aus csv und laden Sie sie (wenn Sie LOCAL vergessen haben, erhalten Sie "# 1045 - Zugriff für Benutzer 'user' @ 'localhost' verweigert (mit Passwort: 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) Spalten ändern:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voilà!
quelle
Dies bedeutet wahrscheinlich, dass das von Ihnen angegebene Passwort
'user'@'localhost'
falsch ist.quelle