IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Problème pour lire et écrire des fichiers sur mon ordi


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 45
    Points : 73
    Points
    73
    Par défaut Problème pour lire et écrire des fichiers sur mon ordi
    Bonjour,

    je débute avec MySQL 8.0.12 (je souhaite utiliser grafana avec) sous windows 10. J'ai pus l'installer et l'utiliser pour créer des datasources et des tables. Je souhaiterai remplir une table avec un fichier csv et la commande mais il ne me laisse pas le faire.
    Il me met cette erreur :

    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    En farfouillant sur votre site, j'ai essayé la solution de regarder quelle était le fichier dans secure-file-priv et de mettre le .csv dans ce fichier mais il continu de me mettre la même erreur. Du coup j'ai tenté une autre solution. Dans my.ini j'ai mis en commentaire la ligne avec le #
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Secure File Priv. 
     # secure-file-priv="C:/Pr gramData/MySQL/MySQL Server 8.0/Uploads"
    j'ai essayé aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     # Secure File Priv. 
     secure-file-priv=""

    Du coup, quand je tape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show variables like 'secure-file-priv'
    il me met bien 'Empty set, 1 warning' mais quand je tente de lire le fichier .csv il me remet la même erreur 1290 et maintenant que je remet la ligne comme elle était dans le ficher my.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Secure File Priv. 
     secure-file-priv="C:/Pr gramData/MySQL/MySQL Server 8.0/Uploads"
    et que je relance le server, il continu de me mettre 'empty set, 1 warning'.
    J'ai aussi essayé avec l'option LOCAL mais ça marche pas, j'ai pus voir que dans cette version le local est désactivé par défaut et je dois mettre une option mais je comprend pas bien où je dois la mettre parce que quand je lance le command line client, il me propose directe mon mot de passe et me connecte directe au server.

    Qulqu'un voit se qui va pas ?

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Voilà l'extrait de la doc MySQL au sujet de cette variable :
    https://dev.mysql.com/doc/refman/8.0...cure_file_priv

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 45
    Points : 73
    Points
    73
    Par défaut
    Oui merci je l'ai déjà parcouru, mais je suis confus parce que quand j'essaye se bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mysql>load data infile 'c:\Users\****\Desktop\q.csv'
        -> into table sp
        -> fields terminated by ','
        -> enclosed by '"'
        -> lines terminated by '\n'
        -> ignore 1 rows;
    il me met l'erreur
    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    alors quand même temps j'ai la variable vide...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mysql> show variables like 'secure-file-priv'
        -> ;
    Empty set, 1 warning (0.00 sec)
    Vous voyez se qui ne va pas ? Est-ce que je peux placer l'option --infile=1 dans le fichier my.ini (où) ?

    Je vous remercie pour la réponse rapide !

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Il faut doubler les \ et, si j'ai bien compris la doc, ne mettre que le chemin et pas le nom du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    load data infile 'c:\\Users\\****\\Desktop'
    Autre détail dans anciennes versions et qui doit rester valable sur la nouvelle mais surtout sensible sous Linux : l'utilisateur MySQL doit avoir le droit de lecture sur le répertoire où se trouve le fichier à importer. Je ne sais pas comment c'est géré sous Windows.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 45
    Points : 73
    Points
    73
    Par défaut
    J'ai essayé de doubler les \ mais ça ne change rien au problème... C'est toujours la même erreur qui apparaît.

    Pour l'option "--localinfile[=1]" est-ce que je peux la mettre dans le fichier my.ini (où) ?

    C'est cool de répondre rapidement, je m'y attendais pas

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Je n'ai pas encore MySQL version 8 mais un MariaDB compatible avec MySQL 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show variables like 'secure_file_priv'
    => avec des _ et non pas des - !

    Cela me retourne :
    Variable_name Value
    secure_file_priv
    => ma variable n'est pas valorisée.

    C'est une variable en lecture seule donc il faut la modifier dans votre my.ini. Elle n'est pas présente dans mon my.cnf (MariaDB sous Mageia Linux). Vu la syntaxe des autres variables présentes dans le my.cnf, il faut y écrire secure_file_priv avec des underscore.
    secure_file_priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
    => puis redémarrer le service mysql.
    Si ça ne fonctionne toujours pas, essayez aussi dans le my.ini avec des \\ au lieu des /.
    Après ces indications, si ça ne fonctionne toujours pas, je sèche et je passe la main à un Windowsien.

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 491
    Points : 19 537
    Points
    19 537
    Par défaut
    Salut à tous.

    Merci CinePhil, vous êtes d'une grande aide, en envoyant lire la documentation MySql.
    Mais cela ne répond pas à la demande de "Jojo 51".

    Concernant l'outil "load data local infile", il y a eu quelques changements dans la version MySql 8.0.
    La docmentation MySql n'est pas très clair à ce sujet.

    1) Quand vous avez l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1148 (42000) at line 40: Cette commande n'existe pas dans cette version de MySQL
    cela signifie que vous utilisez encore "load data local infile".
    Il faut maintenant écrire : "load data infile", c'est-à-dire sans le "local".

    2) Quand vous avez l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1290 (HY000) at line 40: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    Vous devez paramétrer votre fichier "my.ini", en ajoutant dans la section "[mysqld]" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # ------------------------ #
    #     Load data infile     #
    # ------------------------ #
     
    local-infile = 1
    secure-file-priv  = E:/30.MySql
    loose-local-infile = on
    Avez-vous remarqué le chemin que j'utilise (E:/30.MySql) ?
    Il n'est pas nécessaire de mettre exactement le répertoire où se trouve le fichier à charger, mais un répertoire englobant le sous-répertoire où va se trouver votre fichier à télécharger.

    3) Si ça persister encore, vous ne devez plus utiliser des chemins relatifs, mais des chemins absolues pour charger vos fichiers.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    SHOW VARIABLES LIKE 'secure_file_priv'
    --------------
     
    +------------------+--------------+
    | Variable_name    | Value        |
    +------------------+--------------+
    | secure_file_priv | E:\30.MySql\ |
    +------------------+--------------+
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      col_num   integer      null default null,
      col_date  datetime     null default null,
      col_char  varchar(255) null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA INFILE 'E:/30.MySql/40.Load/Ex_01/fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1, @F2, @F3)
         set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3)
    --------------
     
    --------------
    select * from trav
    --------------
     
    +---------+---------------------+--------------------+
    | col_num | col_date            | col_char           |
    +---------+---------------------+--------------------+
    |    NULL | 2014-05-10 15:33:17 | web                |
    |     125 | 2014-05-15 23:53:59 | alpha; beta; gamma |
    |    -247 | NULL                | zéro               |
    +---------+---------------------+--------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    Dans cet exemple, le paramètre de "secure_file_priv" est "E:\30.MySql\".
    Par contre, le fichier que je charge se trouve dans "E:/30.MySql/40.Load/Ex_01/fichier.txt", c'est-à-dire un sous-répertoire.
    Indiquer un chemin absolue me gène car je préfère mettre un chemin relatif.
    Et si je dois déplacer mon répertoire, je suis obligé d'intervenir dans le script. C'est pas bon du tout !!!

    En espérant vous avoir répondu à votre demande.

    Citation Envoyé par CinePhil
    Vu la syntaxe des autres variables présentes dans le my.cnf, il faut y écrire secure_file_priv avec des underscore.
    Encore une connerie de votre part. Dans le fichier "my.ini", on met des tirets et non des soulignés.
    Comment pouvez-vous le savoir si vous n'avez pas encore installé MySql sur votre ordinateur ?

    Citation Envoyé par CinePhil
    Si ça ne fonctionne toujours pas, essayez aussi dans le my.ini avec des \\ au lieu des /.
    Encore une autre connerie. On met des "/" pour les chemins dans le fichier "my.ini".

    @+

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 45
    Points : 73
    Points
    73
    Par défaut
    Bonjour à tous,

    merci à chacun pour la peine qu'il se donne, j'ai essayé différente solution proposé ici mais rien n'a fonctionné.

    Comme le but de tous ça est de connecter mon server mysql à grafana (dashboard) et qu'il y avait aussi des problèmes de ce coté là à cause des permissions, j'ai tout simplement désintallé mysql 8 et installer mysql 5.

    Tout va beaucoup mieux depuis

    Merci encore à chacun pour le temps qu'il aura passer à m'aidé

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 45
    Points : 73
    Points
    73
    Par défaut
    Rebonjour à tous !

    J'ai denouveau un problème pour charger un fichier csv dans une table. J'avais le soucie avec MySQL 8, du coup j'ai désintallé MySQL 8 et installer MySQL 5.7 et ça marche parfaitement depuis l'invite de commande. Par contre, le installer MySQL 5.7 m'a installé workbench 8 et dans workbench j'arrive pas a utilisé la commande load -.-'

    J'ai écris l'option
    [client]
    loose-local-infile=1
    dans le my.ini, j'ai relancé le workbench mais ça ne fonctionne quand même pas j'ai l'erreur

    ERROR 1148 The used command is not allowed with this version of MySQL
    Du coup je suis un peu perdu parce que j'avais complétement désintaller MySQL8 et j'ai utilisé l'installer MySQL 5.7 mais dans mon fichier MySQL j'ai un MySQL server 8.0 et un MySQL server 5.7.

    Bref est-ce que quelqu'un saurait ce qui se passe ?

    Je suis sous windows 10.

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 491
    Points : 19 537
    Points
    19 537
    Par défaut
    Salut jojo51.

    Tout est dit dans mon message. Pourquoi n'appliquez-vous pas mes recommandations ?

    @+

Discussions similaires

  1. [XL-2007] MACRO pour compter le nombre des fichiers sur le serveur FTP
    Par kinkichin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2011, 18h09
  2. Réponses: 2
    Dernier message: 21/12/2009, 22h34
  3. Réponses: 1
    Dernier message: 16/09/2008, 13h30
  4. Réponses: 2
    Dernier message: 25/09/2007, 15h55
  5. Réponses: 9
    Dernier message: 05/04/2005, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo