Win7 मुद्दों पर जावा कोड से MySQL mysqldump

ठीक है, मेरा जावा एप्लिकेशन विंडोज रनटाइम वातावरण का उपयोग कर एक mysqldump बैकअप करने में सक्षम नहीं है। मेरे पास पकड़े गए अपवादों के लिए प्रिंटआउट कोड है और मुझे कोई अपवाद नहीं फेंक दिया गया है, बैकअप कोड निष्पादित होने पर सतह पर ठीक लग रहा है।

मैंने कमांड लाइन कंसोल में mysqldump कमांड का भी परीक्षण किया है; और यह वहां कोई मुद्दा नहीं है।

कोड:

Runtime rt = Runtime.getRuntime();
try {
    Process pr = rt.exec("mysqldump -u test --password=pass lager > newBackup.sql");

} catch (IOException ex) {
     System.out.println("IO error Runtime.  "+ex.getMessage());
}

क्या किसी को पता है कि यह डेटाबेस को डंप/बैकअप क्यों नहीं करेगा? क्या मुझे कुछ अनुमति जोड़ने या कुछ करने की आवश्यकता है (विंडोज 7 चल रहा है)।

0
जोड़ा संपादित
विचारों: 1
बात करता है, यह कोई अपवाद नहीं फेंकता है। यह तब होता था जब मुझे कमांड मिला, या मेरे पास एक पाथ चर के रूप में mysqldump नहीं था। बस कोई फाइल आउटपुट नहीं की जा रही है, और मुझे नहीं पता कि क्यों कोई प्रतिक्रिया नहीं है।
जोड़ा लेखक gorn, स्रोत
आप ex.getMessage() प्रिंट कर रहे हैं लेकिन आप हमें यह नहीं बता रहे हैं कि यह क्या कहता है?
जोड़ा लेखक Radu Murzea, स्रोत

1 उत्तर

हो सकता है कि आप अंतर के बारे में इस आलेख को देख सकें बीटवेन निष्पादन और कमांड लाइन ( http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html )।

मेरी तरफ से मैं इस कोड को आजमाता हूं जो क्लास स्ट्रीमगॉगल के साथ mysqldump --help कमांड के आउटपुट को कैप्चर करने के लिए काम करता है javaworld से आलेख में मिलता है:

    public Main() {
    try {
        FileOutputStream fos = new FileOutputStream("c:/tmp/test.txt");
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("mysqldump --help");
       //any error message?
        StreamGobbler errorGobbler = new StreamGobbler(
                proc.getErrorStream(), "ERROR");

        StreamGobbler outputGobbler = new StreamGobbler(
                proc.getInputStream(), "OUTPUT", fos);

        errorGobbler.start();
        outputGobbler.start();

        int exitVal = proc.waitFor();
        System.out.println("ExitValue: " + exitVal);
        fos.flush();
        fos.close();
    } catch (Throwable t) {
        t.printStackTrace();
    }
}
0
जोड़ा