70 votes

Mysql charge les données depuis le fichier ne peut pas obtenir le statut du fichier Errcode: 2

J'ai cherché partout et n'ai trouvé aucune solution, toute aide sur ce point serait la bienvenue.

Requête:

LOAD DATA INFILE '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' 
INTO TABLE `tba`.`tbl_name` 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(
field1, field2, field3
)

Erreur:

Impossible d'obtenir les informations de stat sur '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' (Errcode:2)

REMARQUE:

Je lance le navigateur de requêtes MySQL sur OSX 10.6.4 en se connectant à MySQL 5.x

Les choses que j'ai essayées:

  • Glisser-déposer
  • Chmod 777
  • Placé dans un dossier avec des autorisations 777 ainsi que le fichier ayant des autorisations 777

0 votes

Vérifiez les forums mysql. Voici juste un lien sur : forums.mysql.com/read.php?10,228976,228976#msg-228976

0 votes

@spinon a essayé ceci, cela ne fonctionne pas. Cela me donne le même chemin de fichier que j'avais. J'ai supprimé ce que j'avais et fait glisser-déposer le fichier. me donne le même chemin. Lors de l'exécution, cela me donne la même erreur

1 votes

Il semble également que le fichier n'existe pas : electrictoolbox.com/article/mysql/mysqlimport-errors Recherchez le code d'erreur : 2 sur la page

136voto

Pierre Points 15256

Essayez d'utiliser LOAD DATA LOCAL INFILE au lieu de LOAD DATA INFILE

sinon vérifiez si apparmor est actif pour votre répertoire

0 votes

J'ai essayé cela mais maintenant j'obtiens une erreur SQL: Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel correspondant à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de 'LOCAL DATA INFILE '/Utilisateurs/nom/Desktop/loadIntoDb/loadIntoDB.csv' INT' à la ligne 1

7 votes

C'est LOAD DATA LOCAL INFILE puisque tu m'as dirigé dans la bonne direction. Réponse acceptée

2 votes

Réponse parfaite, j'ai eu un problème similaire et c'était apparmor, merci! :-)

11voto

user2788525 Points 51

J'ai eu un problème similaire. La résolution était un hack assez moche, mais beaucoup plus facile à retenir que les contournements d'apparmor pour autant que vous puissiez utiliser 'sudo'. Tout d'abord, j'ai dû mettre le fichier d'entrée dans le sous-répertoire mysql pour la base de données que j'utilisais :

sudo cp myfile.txt /var/lib/mysql/mydatabasename

Cela effectue une copie et laisse 'root' comme propriétaire du fichier. Après avoir accédé à mysql et exécuté un USE mydatabasename, j'ai pu remplir la table appropriée en utilisant

LOAD DATA INFILE 'mytabdelimitedtextfile.txt' INTO TABLE mytablename;

2 votes

Pour ceux qui pourraient trouver cela utile, voici la solution qui a fonctionné pour moi au lieu de la réponse acceptée. Je suis sur Ubuntu 12.04 LTS et MySQL 5.5.35-0ubuntu0.12.04.1.

1 votes

De même, j'ai pu contourner ce problème sur Ubuntu 12.04, mysql 5.5.31 en changeant l'utilisateur: groupe de mon fichier en mysql:mysql

2voto

Zodzie Points 1

Utiliser le paramètre --local aidera avec cela.

Exemple: mysqlimport --local nomdelabase fichier.txt -p

source: http://dev.mysql.com/doc/refman/5.1/fr/load-data.html "L'option --local fait que mysqlimport lit les fichiers de données depuis l'hôte client"

1voto

jciloa Points 164

Pour moi, copier le contenu dans /tmp et l'utiliser comme dossier source a fonctionné. Je utilise MariaDB, et ma version ne permet pas d'utiliser le modificateur "LOCAL". Curieusement, donner un accès en lecture-écriture au dossier CSV n'a pas non plus fonctionné.

0voto

Akash Rudra Points 116

J'ai eu le même problème en peuplant une table dans mysql sur une instance AWS.

Dans mon cas, j'avais le fichier csv dans l'instance elle-même.

Mettre le chemin absolu a résolu mon problème.

Voici la ligne de la documentation MySQL

Si LOCAL est spécifié, le fichier est lu par le programme client sur l'hôte client et envoyé au serveur. Le fichier peut être donné sous forme de nom de chemin complet pour spécifier son emplacement exact. S'il est donné sous forme de nom de chemin relatif, le nom est interprété par rapport au répertoire dans lequel le programme client a été démarré.

http://dev.mysql.com/doc/refman/5.7/fr/load-data.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X