日期:2014-05-20  浏览次数:20794 次

java的mysql数据库还原问题

在执行下还原数据库代码时,可以建立数据库,但是不能还原数据。
public static void load(String fileName) throws Exception {
String username = "root";
String password = "root3306";
String mysqlpath = "D:\\DeveloperTools\\MySQL\\MySQL Server 5.6\\bin\\";
String databaseName = "nasystem";
String address = "localhost";
String sqlpath = "D:\\";
// 建立数据库
String createDatabase = mysqlpath + "mysqladmin -u" + username + " -p"
+ password + " create " + databaseName;
// 还原数据库数据
String loadData = mysqlpath + "mysql -h " + address + " -u"
+ username + " -p" + password + " " + databaseName + " < "
+ sqlpath + fileName;

System.out.println("建立数据库:" + createDatabase);
System.out.println("还原数据:" + loadData);

Runtime r = Runtime.getRuntime();
r.exec(createDatabase);
r.exec(loadData);
}


两个打印为:
1.建立数据库:D:\DeveloperTools\MySQL\MySQL Server 5.6\bin\mysqladmin -uroot -proot3306 create nasystem
2.还原数据:D:\DeveloperTools\MySQL\MySQL Server 5.6\bin\mysql -h localhost -uroot -proot3306 nasystem < D:\nasystem.sql

问题:
doc命令里在mysql的bin目录下使用:【mysql -h localhost -uroot -proot3306 nasystem < D:\nasystem.sql】命令可以正常还原备份的数据,但在程序里不能实现数据还原,请大家帮忙看下。谢谢。
数据库 备份 数据 java mysql

------解决方案--------------------
跟同步问题无关,Runtime所执行程序,如果需要输出大量信息到console上,而又没有被处理掉的情况下,输出缓冲区会因为占满而被阻塞,那么程序就不再执行下去了。

相当于卡死在:System.out.println()这种信息输出语句上。

让你解决 getInputStream() 和 getErrorStream(),就是要实时处理掉所执行进程的输出信息;因为你这里没什么压力,所以另外开线程专门进行处理。