91 votes

ERROR 1148 : La commande utilisée n'est pas autorisée avec cette version de MySQL.

J'essaie de charger les données dans la base de données mysql en utilisant

LOAD DATA LOCAL
INFILE A.txt
INTO DB
LINES TERMINATED BY '|';

Le sujet de cette question est la réponse que je reçois. Je comprends que le déchargement des données locales est désactivé par défaut et que je dois l'activer à l'aide de la commande local-infile=1 mais je ne sais pas où placer cette commande.

121voto

arkascha Points 9691

Vous pouvez le spécifier comme une option supplémentaire lors de la configuration de votre connexion client :

mysql -u myuser -p --local-infile somedatabase

En effet, cette fonctionnalité ouvre une faille de sécurité. Vous devez donc l'activer de manière explicite au cas où vous voudriez vraiment l'utiliser.

Le client et le serveur doivent tous deux activer l'option de fichier local. Pour l'activer pour les fichiers du côté serveur, ajoutez ce qui suit au fichier my.cnf le fichier de configuration :

loose-local-infile = 1

66voto

XuJiawan Points 551

Je trouve la réponse aquí .

C'est parce que la variable du serveur local_infile est réglé sur FALSE|0 . Se référer à la document .

Vous pouvez vérifier en exécutant :

SHOW VARIABLES LIKE 'local_infile';

Si vous avez le privilège SUPER, vous pouvez l'activer (sans redémarrer le serveur avec une nouvelle configuration) en exécutant :

SET GLOBAL local_infile = 1;

20voto

Vineet Sharma Points 121

SpringBoot 2.1 avec connecteur MySQL par défaut

Pour résoudre ce problème, veuillez suivre les instructions suivantes

1. SET GLOBAL local_infile = 1 ;

Pour définir cette variable globale, veuillez suivre les instructions fournies dans la documentation MySQL. https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html

2. Changez la chaîne du connecteur MySQL

allowLoadLocalInfile=true Exemple : jdbc:mysql://localhost:3306/xxxx?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&allowLoadLocalInfile=true

13voto

http://dev.mysql.com/doc/refman/5.6/en/load-data-local.html

Mettez ceci dans my.cnf - le fichier [client] la section devrait déjà être là (si vous n'êtes pas trop préoccupé par la sécurité).

[client]
loose-local-infile=1

13voto

Adam Marsh Points 488

J'ai également rencontré ce problème en essayant de télécharger des données .csv dans l'instance AWS RDS à partir de mon ordinateur local en utilisant la méthode suivante Banc d'essai MySQL sur Windows.

Le complément dont j'avais besoin était d'ajouter OPT_LOCAL_INFILE=1 dans : Connexion > Avancé > Autres. Notez que les majuscules étaient nécessaires.

J'ai trouvé cette réponse en PeterMag dans les AWS Developer Forums .


Pour plus d'informations :

SHOW VARIABLES LIKE 'local_infile'; déjà rendu ON et la question était :

LOAD DATA LOCAL INFILE 'filepath/file.csv' 
    INTO TABLE `table_name`
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;

Copie de la source de réponse référencée ci-dessus :

Il s'agit apparemment d'un bogue dans MYSQL Workbench V8.X. En plus des configurations indiquées plus haut dans ce fil de discussion, vous devez également modifier la connexion MYSQL dans Workbench comme suit :

  1. Allez à la page d'accueil de MYSQL qui affiche toutes vos connexions.
  2. Sélectionnez Gérer les connexions du serveur (la petite icône en forme de clé).
  3. Sélectionnez votre connexion
  4. Sélectionnez l'onglet Avancé
  5. Dans la case Autres, ajoutez OPT_LOCAL_INFILE=1

Je peux maintenant utiliser la requête LOAD DATA LOCAL INFILE sur MYSQL RDS. Il semble que que la permission File_priv n'est pas requise.*

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