急救!Java还原mysql数据库报错:java.io.IOException: 管道已结束。

宏奕369 2010-03-27 01:22:06
用java做了个备份和恢复mysql数据库的程序,备份可以了,但是恢复总是报错:java.io.IOException: 管道已结束。
备份文件为.sql文件
数据库mysql5.0.22
jdk1.6
tomcat6.0
我自己修了很久都没有调好,希望各位大虾指教了.代码如下

try {
Process child = Runtime.getRuntime().exec(
"mysql -uroot -proot mandb");
OutputStream out = child.getOutputStream();// 控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("d:\db.sql"), "utf-8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
out.close();
br.close();
writer.close();

System.out.println("恢复成功!");

} catch (Exception e) {
e.printStackTrace();

}



后台错误:
java.io.IOException: 管道已结束。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:116)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:203)
at java.io.Writer.write(Writer.java:140)
at com.rail.web.action.DatebaseAction.RstoreDB(DatebaseAction.java:118)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
...全文
1181 20 打赏 收藏 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
当时汉就来了 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
引用 18 楼 的回复:
引用 16 楼 的回复:

引用 10 楼 dhdhdh0920 的回复:
问题解决了,采用另外一个方式解决了


最特么鄙视这种行为,有问题叫着嚷着要帮忙;自己解决了丢几个字母在这就拍屁股走人。
说得难听点就是一种变态扭曲心理在作祟!

up
up
[/Quote]艹 解决了 也不说一下怎么解决的 没品的人!
当时汉就来了 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
引用 16 楼 的回复:

引用 10 楼 dhdhdh0920 的回复:
问题解决了,采用另外一个方式解决了


最特么鄙视这种行为,有问题叫着嚷着要帮忙;自己解决了丢几个字母在这就拍屁股走人。
说得难听点就是一种变态扭曲心理在作祟!

up
[/Quote] up
wh351531104 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

引用 10 楼 dhdhdh0920 的回复:
问题解决了,采用另外一个方式解决了


最特么鄙视这种行为,有问题叫着嚷着要帮忙;自己解决了丢几个字母在这就拍屁股走人。
说得难听点就是一种变态扭曲心理在作祟!
[/Quote]
up
tangmin823 2012-05-21
  • 打赏
  • 举报
回复
楼主,怎么解决的,可以写下方法好不?
为国读书 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dhdhdh0920 的回复:]
问题解决了,采用另外一个方式解决了
[/Quote]

最特么鄙视这种行为,有问题叫着嚷着要帮忙;自己解决了丢几个字母在这就拍屁股走人。
说得难听点就是一种变态扭曲心理在作祟!
wyz5792 2010-09-15
  • 打赏
  • 举报
回复
楼主,能不能说详细些,我也遇到这个问题,不知道怎么解决? 楼主能说详细些吗
  • 打赏
  • 举报
回复
将exec("mysql -uroot -proot mandb");
改成
exec("mysqldump -uroot -pa --set-charset=utf8 mandb");
试看看
hf_luo 2010-07-27
  • 打赏
  • 举报
回复
楼主,能不能说详细些,我也遇到这个问题,不知道怎么解决?
宏奕369 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hosterzhu 的回复:]
引用 10 楼 dhdhdh0920 的回复:
问题解决了,采用另外一个方式解决了


用什么解决的啊 !! 我现在也遇到这样的问题了
[/Quote]
mysqldump
-船长- 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dhdhdh0920 的回复:]
问题解决了,采用另外一个方式解决了
[/Quote]

用什么解决的啊 !! 我现在也遇到这样的问题了
justchenjie 2010-03-27
  • 打赏
  • 举报
回复
你不是注明只是 writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
out.close();
br.close();
writer.close();
,你先改一下顺序!先关writer
jumpheightway 2010-03-27
  • 打赏
  • 举报
回复
对直接用mysql的导入命令
宏奕369 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qingyuan18 的回复:]
为啥写这么多代码,直接用Mysql的导入不可以么?

Runtime.getRuntime().exec("mysql -u root --password=mandb<<d:\db.sql");
[/Quote]

试过了不行,数据量不大才800多KB怎么会报管道关闭,郁闷
哀 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qingyuan18 的回复:]
为啥写这么多代码,直接用Mysql的导入不可以么?

Runtime.getRuntime().exec("mysql -u root --password=mandb<<d:\db.sql");
[/Quote]up
qingyuan18 2010-03-27
  • 打赏
  • 举报
回复
为啥写这么多代码,直接用Mysql的导入不可以么?

Runtime.getRuntime().exec("mysql -u root --password=mandb<<d:\db.sql");
宏奕369 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 justchenjie 的回复:]
可能是你资源关闭顺序有问题
[/Quote]

writer.write(outStr);eclipse提示这行错误
justchenjie 2010-03-27
  • 打赏
  • 举报
回复
可能是你资源关闭顺序有问题
javafx 2010-03-27
  • 打赏
  • 举报
回复
不知道什么原因,只能帮顶
宏奕369 2010-03-27
  • 打赏
  • 举报
回复
问题解决了,采用另外一个方式解决了
宏奕369 2010-03-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 justchenjie 的回复:]
你不是注明只是 writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
out.close();
br.close();
writer.close();
,你先改一下顺序!先关writer
[/Quote]
先关那个都是一样,试过了,郁闷中...
内容概要:本文系统研究了基于雅可比伪逆迭代的双臂协同轨迹规划与跟踪误差收敛性问题,结合机械臂正向与逆向运动学建模、蒙特卡洛法分析工作空间、笛卡尔空间内的圆弧轨迹生成等关键技术,利用Matlab实现了双臂系统的协同控制与轨迹跟踪仿真。重点探讨了雅可比矩阵伪逆法在解决冗余自由度机械臂逆运动学问题中的应用,深入分析了轨迹跟踪过程中误差的收敛特性,并通过仿真实验验证了该方法在复杂任务场景下的有效性、稳定性与鲁棒性,为多臂机器人在工业自动化、精密操作等领域的协同作业提供了理论依据与技术支持。; 适合人群:具备机器人学、自动控制理论基础及Matlab编程能力的科研人员与工程技术人员,特别适合从事机械臂控制、轨迹规划、多机器人协同等方向的硕士、博士研究生及相关领域研究人员。; 使用场景及目标:①掌握基于雅可比伪逆法的机械臂逆运动学求解原理与实现方法;②理解双臂系统在笛卡尔空间中协同轨迹规划的机制;③分析并优化轨迹跟踪过程中的误差收敛性能;④为多机器人系统在复杂动态环境下的高精度协同控制提供算法设计与仿真验证支持。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,按照文档目录循序渐进地学习,重点关注算法实现细节、仿真参数设置与结果分析部分,同时可进一步探索将智能优化算法或深度学习方法引入轨迹规划与误差补偿的研究方向。

81,108

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧