通过批处理文件连接到MySQL

时间:2015-07-27 11:09:41

标签: mysql batch-file cmd

我已经配置了一个批处理文件,每隔30秒左右检查一个Web托管数据库,看看一个字段中的值是否已经设置为1.我很高兴它是如何工作的,结果很好。

但是我遇到的一个问题是,有时脚本无法连接到SQL服务器。发生这种情况时,我的脚本出错,批处理文件停止。

我使用的连接线是:

mysql --host=xxx.xxx.xxx --port=3306 --force --user=wmc --password=xxxxxxxxx --database=xxx < xxx.sql

最后的sql文件包含我想要运行的命令。我读了一些文档,说--force应该在错误之后使脚本继续运行,但是当它无法连接到SQL服务器时仍然会出错。有什么方法可以捕获这个错误吗?

1 个答案:

答案 0 :(得分:0)

您的主要问题似乎是错误处理。我个人会更改我的脚本以便能够检测到故障,然后重试直到成功。

快速测试

我在自己的系统上进行的粗略测试,用于检查错误级别的伪环境变量:

<强> TEST.BAT

listView.setSelection(position);

控制台结果

 D:\xampp\mysql\bin\mysql --host=127.0.0.1 --port=3306 --force --user=root2 --password= --database=saasplex < test.sql
    echo Exit Code is %errorlevel%

    D:\xampp\mysql\bin\mysql --host=127.0.0.1 --port=3306 --force --user=root --password= --database=saasplex < test.sql
    echo Exit Code is %errorlevel%

具有重试次数的批处理脚本

F:\_MBAK_DOCUMENTS\_OTHER_PROJECTS\STACKEXCHANGE\August6>mysqlErrorDetect.bat

F:\_MBAK_DOCUMENTS\_OTHER_PROJECTS\STACKEXCHANGE\August6>D:\xampp\mysql\bin\mysql --host=127.0.0.1 --port=3306 --force --user=root2 --password= --database=saasplex  0<test.sql
Warning: Using a password on the command line interface can be insecure.
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'saasplex'

F:\_MBAK_DOCUMENTS\_OTHER_PROJECTS\STACKEXCHANGE\August6>echo Exit Code is 1
Exit Code is 1

F:\_MBAK_DOCUMENTS\_OTHER_PROJECTS\STACKEXCHANGE\August6>D:\xampp\mysql\bin\mysql --host=127.0.0.1 --port=3306 --force --user=root --password= --database=saasplex  0<test.sql
Warning: Using a password on the command line interface can be insecure.
1
1

F:\_MBAK_DOCUMENTS\_OTHER_PROJECTS\STACKEXCHANGE\August6>echo Exit Code is 0