2013-01-09 3 views
0

Это, как я сделать MySQL дамп из ЯвыRuning туздЫшпр из кода Java не будет сбрасывать триггеры

public static boolean mysqlDump(String destination){ 
File back=new File("tempsdfsdf.fdr"); 
Runtime rt = Runtime.getRuntime(); 
FileWriter fw=null; 
try { 
    fw = new FileWriter(back); 
} 
catch (IOException ex) { 
    return false; 
} 
Process child; 
try { 
    child = rt.exec("mysqldump -h"+generals.DATABASE_SERVER+" -u"+DATABASE_USER+" -p"+DATABASE_PASS+" --single-transaction --routines databasename -r"+destination); 
    InputStream in = child.getInputStream(); 
    InputStreamReader xx = new InputStreamReader(in,"utf8"); 
    char[] chars=new char[1024]; 
    int ibyte=0; 
    while((ibyte=xx.read(chars))>0) 
    { 
    fw.write(chars); 
    } 
    fw.close(); 
    Utils.deleteFile(back); 
} catch (IOException ex) { 
    Logger.getLogger(FRMTestare.class.getName()).log(Level.SEVERE, null, ex); 
    return false; 
} 
return true; 

}

файл дампа «назначения», но я должен имитировать написание InputStream () в файл, чтобы гарантировать, что файл назначения будет полностью создан, когда угроза закончится, чтобы я мог закрепить его в другой угрозе. В любом случае это не важно! Мой вопрос в том, почему, когда я запускаю команду в cmd, это триггеры демпинга, но когда я запускаю ту же команду, используя Runtime.exec, триггеры не сбрасываются. Извините, код я беспорядок, но я потерял весь день, сменив его на триггеры сбрасывания. Спасибо!

ответ

0

Если аргументы mysqldump совпадают, если вы запускаете их в двух разных средах, разница должна быть в разрешениях пользователей, которых вы используете.

Проверьте, какие команды выполняются пользователем (используя SHOW PROCESSLIST в другом окне во время работы mysqldumps), и это должно показать разницу и указать путь к решению: измените пользователя или измените права пользователя, которого вы использование.

0

Точно так же вы использовали экспликацию --routines также попробуйте --triggers. Вероятно, вы видите различия из-за того, что в вашей оболочке обнаружен и обработан различный файл по умолчанию, а не у JDK. Вероятно, это не стоит усилий по его отслеживанию. Явный --triggers должен работать.

Смежные вопросы