J'utilise des requêtes MySQL tout le temps en PHP, mais quand j'essaye
LOAD DATA INFILE
J'obtiens l'erreur suivante
# 1045 - Accès refusé pour l'utilisateur 'user' @ 'localhost' (en utilisant le mot de passe: OUI)
Est-ce que quelqu'un sait ce que cela signifie?
--local-infile
option.J'ai eu ce problème. J'ai cherché partout et je n'ai pas trouvé de réponse satisfaisante. Je résume ci-dessous les résultats de mes recherches.
L'erreur d'accès refusé peut signifier que:
GRANT FILE on *.* to user@'localhost'
); ou,la source
Essayez d'utiliser cette commande:
Cela devrait fonctionner. Cela a fonctionné dans mon cas.
la source
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Assurez-vous que votre utilisateur MySQL dispose du privilège FILE.
Si vous utilisez un hébergement Web partagé, il est possible que cela soit bloqué par votre fournisseur d'hébergement.
la source
La chaîne de Lyon m'a donné un très bon conseil: sous Windows, il faut utiliser des slahes et non des backslashes. Ce code fonctionne pour moi:
la source
J'ai rencontré le même problème et je l'ai résolu en suivant ces étapes:
Pour ce 3ème point, vous pouvez vous référer à: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR,
UN D
la source
Cela m'est arrivé aussi et malgré avoir suivi toutes les étapes décrites par Yamir dans son message, je n'ai pas pu le faire fonctionner.
Le fichier se trouvait dans /tmp/test.csv avec 777 autorisations. L'utilisateur MySQL avait des autorisations de fichier, l'option LOCAL n'était pas autorisée par ma version MySQL, donc j'étais bloqué.
Enfin, j'ai pu résoudre le problème en exécutant:
la source
J'en ai trouvé un facile si vous utilisez la ligne de commande
Se connecter en tant que
mysql -u[username] -p[password] --local-infile
puis
SET GLOBAL local_infile = 1;
sélectionnez votre base de données en
use [db_name]
et enfin
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;
la source
SET GLOBAL local_infile = 1;
ne semble pas fonctionner dans RDS, mais de toute façon, cela a--local-infile
fait l'affaireJ'ai découvert que le chargement de tables MySQL pouvait être rapide et indolore (j'utilisais des scripts de gestionnaire de modèles python / Django):
1) créer une table avec toutes les colonnes VARCHAR (n) NULL par exemple:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2) supprimez les en-têtes (première ligne) de csv, puis chargez (si vous oubliez le LOCAL, vous obtiendrez «# 1045 - Accès refusé pour l'utilisateur 'user' @ 'localhost' (en utilisant le mot de passe: OUI)»):
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) modifier les colonnes:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
voilà!
la source
Cela signifie probablement que le mot de passe que vous avez fourni
'user'@'localhost'
est incorrect.la source