首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql批处理文件中的Tee命令不起作用

mysql批处理文件中的Tee命令不起作用
EN

Stack Overflow用户
提问于 2013-12-11 12:51:25
回答 1查看 2.7K关注 0票数 0

我有mysql批处理文件名为data.sql,它包含以下数据

代码语言:javascript
复制
tee /var/lib/MYSQLBACKUP/info.txt;
USE APR_PHASE_II ;
INSERT INTO PRODUCTDETAILS (ITEM_CODE,ITEM_DESC) VALUES ('WT002','Water for Injection USP');
INSERT INTO PRODUCTDETAILS (ITEM_CODE,ITEM_DESC) VALUES ('WT003','Water for Injection USP');

当我使用以下命令执行data.sql脚本时

代码语言:javascript
复制
mysql -u root -ppass < /var/lib/data.sql;

它将把数据插入到表PRODUCTDETAILS中,但是没有将执行的输出存储到info.txt文件中,因为我们正在执行第一个tee命令到批处理文件,所以应该将输出重定向到info.txt。

如果我登录到mysql命令提示符,然后逐一执行批处理文件语句,它会将输出重定向到info.txt,有人能在这个问题上指导我吗?

Mysql版本为5.1,操作系统为fedora 14。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-12 00:38:10

批处理模式不会产生任何输出(cf )。"Query,1 Row受影响“(在交互模式下),除非出现错误,所以没有什么可查看的。

但是,它确实在第一个错误时停止并向STDERR写了一条消息--这与在交互模式下使用source命令不同,后者一直在运行。

如果使用<重定向到mysql命令行客户端的批处理遇到错误,则执行将停止,而$?变量将包含一个非零值。它将包含关于成功的“0”。

可以使用STDERR重定向将2>流捕获到文件中。

代码语言:javascript
复制
$ mysql < deliberate_error_in_here.sql 2>err.txt

控制台上没有显示任何内容,但退出状态变量设置为1。

代码语言:javascript
复制
$ echo $?
1

我命名为"err.txt“的文件包含错误。

代码语言:javascript
复制
$ cat err.txt
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near 'foo' 
at line 1

在windows上,如果发生错误,您将检查%ERRORLEVEL%是否为非零值,而不是%ERRORLEVEL%

这是否是有用的信息真的取决于你想要做什么。如果您只是使用批处理模式,但实际上是手动地执行此操作,那么使用tee然后使用source {filename}应用文件可能更接近您要查找的文件,因为它确实显示了输出,但它没有显示正在执行的实际语句,因为您并没有实际键入它(它只显示使用source命令,然后是执行这些命令所产生的所有正常输出)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20519641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档