当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]Java Process exec方法调用mysqldump读取output不完整
帖子发表于 : 2008-07-22 12:38 

注册: 2008-07-22 12:20
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
大哥们:
在终端执行:
代码:
mysqldump -uroot -proot sale PURCHASE_FORM_BASE PURCHASE_FORM_PRODUCT -t -w " CategoryFlag = 1 and YearId = '2008' "

得出完整备份SQL,
使用Java Process exec方法执行时就只能得到
代码:
--
-- Dumping data for table `PURCHASE_FORM_PRODUCT`
--
-- WHERE:   CategoryFlag = 1 and YearId = '2008'

以上部分,得不到备份表及表记录信息:
代码:
-- MySQL dump 10.11
--
-- Host: localhost    Database: sale
-- ------------------------------------------------------
-- Server version   5.0.51a-3ubuntu5.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


在windows中测试是可以的,换到Ubuntu就不中了。
是没有得到完整的控制台输出,还是在转到字符串过程中没有转换完全,我也不知道。

代码:
// 调用 mysql 的 cmd:
         // 设置导出编码为utf8。这里必须是utf8
         Process child = rt.exec(dumpCommand);
         
         // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。
         // 注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
         // 控制台的输出信息作为输入流
         InputStream in = child.getInputStream();

         // 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
         InputStreamReader xx = new InputStreamReader(in);
         String inStr;
         StringBuffer sb = new StringBuffer("");
         String outStr;
         // 组合控制台输出信息字符串
         BufferedReader br = new BufferedReader(xx);
         while ((inStr = br.readLine()) != null) {
            sb.append(inStr + "\n");
         }
         outStr = sb.toString();


请大哥们帮帮我啊!这段也是网上找的,在windows里是没有问题的。


页首
 用户资料  
 
2 楼 
 文章标题 : 问题已经解决
帖子发表于 : 2008-07-22 23:43 

注册: 2008-07-22 12:20
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
解决了,是java的一个bug
用Runtime.getRuntime().exec();如果参数为字串,解析为字串数组时会出错,所以最好还是用字串数组做参数。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Sogou [Spider] 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译