MySQL LOAD_FILE retourne NULL
Je veux obtenir SQL LOAD_FILE de la fonction de travail et ont lu chaque question/réponse + documentation à ce sujet, mais voici ce qui se passe.
Quand je veux LOAD_FILE de mon répertoire home:
mysql> SELECT LOAD_FILE('/home/myuser/somefile.txt');
+----------------------------+
| LOAD_FILE('/home/myuser/somefile.txt') |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)
Donc, après cela, je pensais que peut-être le problème, c'est que MySQL ne peut pas accéder à mon répertoire home. Et j'ai essayé de courir ce qui a bien fonctionné:
SELECT LOAD_FILE('/etc/mysql/my.cnf');
Puis SELECT LOAD_FILE('/etc/passwd');
a bien fonctionné ainsi.
Alors j'ai dit je t'ai eu, c'est un fichier/dossier en lecture/propriété problème d'autorisation. Donc, j'ai déplacé mon fichier dans /etc/mysql/mais il ne fonctionne toujours pas. J'ai essayé chown mysql:mysql somefile.txt
mais encore, j'ai pas eu de chance:
mysql> SELECT LOAD_FILE('/etc/mysql/somefile.txt');
+----------------------------+
| LOAD_FILE('/etc/mysql/somefile.txt') |
+----------------------------+
| NULL |
+----------------------------+
1 row in set (0.00 sec)
P. S.
1. Tous les fichiers sont lisibles par tous les groupes d'utilisateurs, donc pas besoin de faire un chmod. Mais j'ai même essayé de chmod 777 si vous souhaitez poser.
2. J'ai vérifié, secure-fichier-priv variable n'est pas définie dans MySQL, donc non, LOAD_FILE n'est pas restreint à n'importe quel chemin.
Les idées de ce que pourrait être le problème?
Oui, c'est fait. J'ai mis une phrase ou deux. Moins de 2 KO au total.
OriginalL'auteur Emir | 2014-06-27
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé qu'il a à faire avec AppArmor. J'ai désactivé AppArmor pour MySQL et cela a fonctionné.
Pour les personnes ayant le même problème, veuillez lire ici: http://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/
Suppléant suit pour désactiver apparmor qui a fonctionné pour moi sur Linux Mint 18 - cela s'arrête apparmor service de courir plus jamais, mais ne supprime pas apparmor paquet de serveurs: # /etc/init.d/apparmor stop # /etc/init.d/apparmor démontage # update-rc.d-f apparmor supprimer # service apache2 restart # service mysql restart
OriginalL'auteur Emir
Par La Documentation
Afin de vérifier tous les mentionnés ci-dessus de la condition satisfait.
EDIT:
Pas sûr de savoir si vous avez bien compris ..
assurez-vous que le fichier de répertoire parent ont l'autorisation d'exécution. Donc, si
somefile.txt
se trouve sousmyuser
répertoire; vous devez exécuter disposer de l'autorisation surmyuser
répertoire.You must have the FILE privilege.
signifie que le FICHIER privilège doit être accordée explicitement à l'aide deGRANT FILE on . TO user@localhost
Rincer le privilège
De déconnexion et Connexion à l'arrière et de vérifier si ça fonctionne ou pas.
Voir ce post MySQL LOAD_FILE() charge les valeurs null
C'est très bien. Quelle est la valeur de
SHOW VARIABLES LIKE 'max_allowed_packet'
?mysql> SHOW VARIABLES LIKE 'max_allowed_packet'; +--------------------+------------+ | Variable_name | Value| +--------------------+------------+ | max_allowed_packet| 1073741824 | +--------------------+------------+ 1 row in set (0.00 sec)
que bien alors. Vérifier édité réponse et varify ces points
Réponse pour ton EDIT: 1. Oui, le dossier a l'autorisation d'exécution. J'ai même essayé de mettre ce fichier dans /etc/mysql/ MySQL qui dispose de tous les accès par défaut. 2. Je suis connecté à MySQL en tant que root, donc oui j'ai vérifié et FICHIERS privilège (et tous les autres privilèges).
OriginalL'auteur Rahul
J'avais le même problème avec Linux Fedora, tout en essayant d'ajouter des images à un champ blob.
J'ai résolu d'adaptation les fichiers dans le répertoire
/var/lib/mysql/images
et donnant la commande:chown -R mysql:mysql /var/lib/mysql/images
OriginalL'auteur exg
Load data infile file_name... est le bon de commande pour le serveur MySQL. Et puisque vous n'avez pas de donner un exemple de données dans votre fichier je ne peux pas montrer que vous savez exactement l'utiliser. Il y a des variables pour gérer les délimiteurs et à la fin de caractéristiques de la ligne. Bonne chance.
OriginalL'auteur user3741598