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

JDBC Java Discussion :

La fonction "source" de MySQL ne fonctionne pas


Sujet :

JDBC Java

  1. #1
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut La fonction "source" de MySQL ne fonctionne pas
    J'obtiens constamment le message d'errreur suivant :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'source C:/structure-bdd.sql' at line 1
    Que faire ???

    Je précise que le fichier sql importé directement via mysql fonctionne parfaitement.

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    La fonction source de MySql?? Tu l'as vu ou? Je viens de regarder la doc pour t'aider mais je ne la vois pas.

  3. #3
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    C'est une fonction qui permet d'exécuter des commandes depuis un fichier texte

    http://dev.mysql.com/doc/refman/5.0/...-commands.html

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    OK. Je vois. Comment utilises tu la fonction source?

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    ce n'est pas une fonction SQL mais une commande de l'outil de ligne de commande de MySQL. C'est donc tout à fait normal de ne pas pouvoir l'utiliser depuis JDBC...

    a++

  6. #6
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Pourtant je l'utilise bien après m'être loggé dans la console MySQL !

    je l'utilise comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> source C:/structure-bdd.txt
    Sinon auriez-vous une alternative permettant d'exécuter des commandes contenues dans un fichier?

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par muad'dib
    Pourtant je l'utilise bien après m'être loggé dans la console MySQL !
    Heu ? Si tu tapes cela dans la console MySQL, pourquoi poster dans le forum JDBC ???

    je déplace dans le forum MySQL où tu aura surement une réponse plus adapté...

    a++

  8. #8
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Après t'etre loggué as tu choisi la bonne database?

    En gros il faut que tu fasses :

    Et ensuite tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source C:/nom_de_ton_fichier
    Chez moi ca passe avec un simple select dans le fichier. Donc si ton fichier passe dans mysql, c'est qu'il doit etre juste
    Donc je ne vois que l'histoire de la BDD non correct

  9. #9
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Non non on s'est mal compris !

    Moi ce que je veux c'est pouvoir utiliser la commande "source", qui semble etre une commande SQL normale au même titre qu'un SELECT ou un INSERT, à l'intérieur de mon programme Java !

  10. #10
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    max as-tu réussi à faire marcher la commande "source" en passant par Java ? car si oui j'aimerais savoir comment tu as fait

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par muad'dib
    Moi ce que je veux c'est pouvoir utiliser la commande "source", qui semble etre une commande SQL normale au même titre qu'un SELECT ou un INSERT, à l'intérieur de mon programme Java !
    Comme je l'ai dit ce n'est pas une commande SQL "normale" comme INSERT ou SELECT, mais une commande spécifique à la ligne de commande de MySQL.

    Je ne pense pas que ce soit utilisable via JDBC...
    Par contre la méthode addbatch() pourrait peut-être te venir en aide...

    a++

    PS : j'ai fait redéplacer le message

  12. #12
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Mon fichier est composé de la sorte :
    DROP TABLE IF EXISTS `messages`;
    CREATE TABLE `messages` (
    `id` int(11) NOT NULL auto_increment,
    `contenu` text NOT NULL,
    `date` date NOT NULL default '0000-00-00',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM COMMENT='Tables des messages défilants' AUTO_INCREMENT=1 ;
    MySQLDump classique, est-ce qu'avec la méthode addBatch je peux parcourir ligne par ligne le fichier et faire pour chaque ligne addBatch(maLigne) ? Parce que c'est ce que j'essaye de faire en ce moment (à défaut de mieux) mais j'ai des erreurs comme si les sauts de ligne posaient un problème :

  13. #13
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Non c'est pas possible via java du moins je n'ai pas essayé!
    C'est une commande. IL faut donc l'ecrire en ligne de commande.


    En passant par Java je n'ai pas essayer. Je me disais bien que tu essayais des trucs un peu spécial. C'est pour cela que je t'avais demandé comment tu le faisait!

    IL y a peut-etre moyen (à vérifier) en java mais bon ca sera avec des
    Runtime.exec(....);

  14. #14
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Au faite je viens de voir de quoi est composé ton fichier.

    Pourquoi ne pas éxecuter en java le contenu de ton fichier?
    Ce serait 4000 fois plus simple...

  15. #15
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Oui finalement c'est ce que j'ai fait, je parcours le fichier ligne par ligne, prends chaque commande se trouvant entre des ; et l'exécute. C'est pas ce que je voulais mais bon au fina lça marche
    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
    			BufferedReader br;
    			try {
    				String line = null;
    				br = new BufferedReader(new FileReader("C:/structure-bdd.sql"))
    				;
    				StringBuffer sb = new StringBuffer();
     
    				while ((line = br.readLine()) != null) sb.append(line);
     
    				StringTokenizer st = new StringTokenizer(sb.toString(), ";", false);
    				while(st.hasMoreTokens()) {	
    					String sql = st.nextToken();
    					if(!sql.equals("")) commande.executeUpdate(sql + ";");
    				}
     
    			}catch(IOException ioe) {
    				ioe.printStackTrace();
    			}

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2006, 11h55
  2. Réponses: 5
    Dernier message: 03/10/2006, 18h25

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