java 调用 mysql set 命令, Runtime 调用失败

2015-06-05 15:34:18 +08:00
 riverphoenix

StringBuffer command = new StringBuffer();

String username ="root";//用户名

String password ="root";//用户密码

String host = "127.0.0.1";//从哪个主机导出数据库,如果没有指定这个值,则默认取localhost  
    String port ="3306";//使用的端口号  


    //注意哪些地方要空格,哪些不要空格  
    command.append("mysql -u").append(username).append(" -p").append(password)//密码是用的小p,而端口是用的大P。  
    .append(" -h").append(host).append(" -P").append(port).append(" ")
    .append(" -e SET GLOBAL rpl_semi_sync_master_timeout = 3000 ");  
     Runtime runtime = Runtime.getRuntime();
     runtime.exec(command);

代码很简单,就是想实现一个简单的配置my.ini的需求,但是并不返回结果,调用也失败了。求问是什么地方出问题了,谢谢

2698 次点击
所在节点    问与答
10 条回复
riverphoenix
2015-06-05 15:35:15 +08:00
因为不能重启mysql,所以放弃了直接改写配置文件的想法,现在想要不要通过调用shell脚本来解决问题
riverphoenix
2015-06-05 16:59:06 +08:00
额,现在有个想法,写一个sql脚本,然后由java来调用,但是没有实验过,
liprais
2015-06-05 16:59:59 +08:00
调用失败返回的什么信息?
riverphoenix
2015-06-05 17:03:40 +08:00
@liprais 什么都不返回,消息直接阻塞了
Septembers
2015-06-05 17:22:17 +08:00
@riverphoenix 写个脚本吧,吧参数引入环境变量,然后运行脚本
riverphoenix
2015-06-05 17:50:23 +08:00
@Septembers 现在有个问题,我的一台电脑上可能安装多个mysql,这样就需要把端口号和ip地址传给脚本,而且我执行的命令是更改mysql配置的,不知道这么做可不可以,有没有更好的方法
ruosu0710
2015-06-05 22:37:00 +08:00
你上面的java 中调用cmd .
看一下你的执行目录.
能不能用mysql或者看一下mysql有没有加入环境变量.
如果不行的话.定位到mysql 的bin目录执行.
类似/app/mysql/bin/mysql -uroot -proot
wohenyingyu01
2015-06-06 11:35:26 +08:00
你在命令行输入这个指令会进入mysql的命令行吧?当然会阻塞了,为什么不用mysql驱动呢?
try{
Class.forName("com.mysql.jdbc.Driver");
//Java 8 new feature: try-with-resources;
try(Connection con=DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mysql?zeroDateTimeBehavior=convertToNull",
username,
password);
Statement s=con.createStatement();
){
con.setAutoCommit(true);
long resultImport=s.executeUpdate("SET GLOBAL rpl_semi_sync_master_timeout = 3000");
System.out.println(resultImport);
}// TODO code application logic here
catch(SQLException e){
e.printStackTrace();
}
}
catch(ClassNotFoundException cnf){
System.out.println("MySQL drivers can not be loaded!!!");
}
riverphoenix
2015-06-08 09:21:32 +08:00
@wohenyingyu01 谢谢,没试过在jdbc里面更改mysql配置,我试试
riverphoenix
2015-06-08 09:22:29 +08:00
@ruosu0710 应该不是这个问题,我的mysql在我本地服务中可以查到,直接cmd进去也可以执行,现在就是没有好的想法,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196346

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX