这就是我从java制作mysql转储的方式
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 运行相同的命令时,触发器不会被转储。对不起,代码一团糟,但我整天把它改成转储触发器。谢谢!