Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [JAVA - MYSQL] problema con mysqldump

    salve devo fare il dump di una tabella di una database mysql.

    ho trovato che il comando da eseguire da shell è
    codice:
    mysqldump.exe
    che si trova in MYSQL-HOME nella cartella 'bin'.

    da shell ho provato il comando e il tutto funziona perfettamente scrivendo :
    codice:
    cd C:\Programmi\MySQL Server 4.1\bin\
    
    mysqldump --opt --u root --password="12345" assistiti_db > backup_db.sql
    però da Java non riesco a eseguire lo stesso comando ho provato così
    codice:
    Runtime r = Runtime.getRuntime();
    try 
    {
       String command = "cmd /c start C:/Programmi/MySQL/MySQL Server 4.1/bin/" +
       "mysqldump.exe --opt --u root --password=\"12345\" " +
       "assistiti_db > backup_db.sql";
       Process pr = Runtime.getRuntime().exec(command);
    }
    catch (Exception ex) {ex.printStackTrace();}
    ma mi da il seguente errore:
    Impossibile trovare il file "C:/Programmi/MySQL/MySQL" verificare che il percorso e il nome del file siano corretti e ritentare.
    prende MySQL come il comando da eseguire perchè subito dopo c'è uno spaio. come posso fare? ho provato sostituendo lo spazio con i %20 ma non cambia

    grazie
    www.matteosteri.it

  2. #2
    Dovresti usare le virgolette!
    'Na cosa tipo:

    codice:
    String command = "cmd /c start \"C:/Programmi/MySQL/MySQL Server 4.1/bin/" +
       "mysqldump.exe --opt --u root --password=\"12345\" " +
       "assistiti_db > backup_db.sql\"";
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    ho provato a usare le virgolette ma non funziona.
    ho provato ad eseguire un file d'esempio ed usando le virgolette
    codice:
    String command = String command = "cmd /c start \"C:/Notepad.jar\"";
    mi apre la shell con su scritto il path del progetto mentre se le tolgo
    codice:
    String command = String command = "cmd /c start C:/Notepad.jar";
    mi esegue l'applicazione Notepad.jar

    ugualmente con MySQL se uso le virgolette mi apre la shell con su scritto il path del progetto mentre se le tolgo mi dà l'errore di cui vi ho già parlato
    Impossibile trovare il file "C:/Programmi/MySQL/MySQL" verificare che il percorso e il nome del file siano corretti e ritentare.
    www.matteosteri.it

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    guarda se funziona così

    String command = "mysqldump.exe";
    String[] env = new String[] {"--opt", "--u", "root", "--password=\"12345\"", "assistiti_db", ">", "backup_db.sql"};
    File dir = new File("C:/Programmi/MySQL/MySQL Server 4.1/bin/");
    Process pr = Runtime.getRuntime().exec(command, env, dir);

  5. #5
    salta la seguente eccezione:
    java.io.IOException: CreateProcess: mysqldump.exe error=2
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at BackupDB.exeCommand(BackupDB.java:54)
    at BackupDB.<init>(BackupDB.java:12)
    at BackupDB.main(BackupDB.java:17)
    utilizzando invece la stringa
    codice:
    String command = "cmd /c start mysqldump.exe";
    non salta l'eccezione ma comunque non funziona, anche se però penso che l'utilizzo del metodo exec con i tre parametri invece che di uno solo sia la strada giusta.
    www.matteosteri.it

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    definizione dell'errore

    2 - The system cannot find the file specified. - ERROR_FILE_NOT_FOUND

    io faccio delle prove

    tu guarda se hai messo il percorso giusto

  7. #7
    dove l'hai trovata la definizione dell'errore?
    ok ora controllo
    www.matteosteri.it

  8. #8
    Allora il percorso l'ho controllato ed è giusto. L'ho confrontato con il comando scritto su shell ed è identico.
    eseguendo il comando da Java mi apre per un millisecondo la shell con su scritto qualcosa che logicamente non riesco a leggere. però alla fin fine il file non lo crea.

    c'è qualche modo per bloccare la shell per almeno vedere se mi scrive qualche errore?
    www.matteosteri.it

  9. #9
    Il comando pause di DOS?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  10. #10
    ho provato eseguendo il comando pause in questo modo:
    codice:
    String command = "cmd /c pause";
    codice:
    String command = "cmd pause";
    ma non funge non mi blocca il programma quindi non resco a capire per quale motivo non mi esegue l'istruzione di dump.
    ho provato anche a dichiarare command come array di String ma il problema sussiste.

    PS: perchè nella stringa di comando si usa "/c" cosa significa?
    www.matteosteri.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.