【发布时间】:2016-02-23 18:09:17
【问题描述】:
我有一个 shell 脚本,它运行一些我想在 Windows 上使用的 db2 命令。 从 msysgit 2.5.3 64bit 在 bash 中运行它时,我从 db2 收到错误:
SQL1024N Die Verbindung zur Datenbank ging verloren。 SQLSTATE=08003
例如
用db2cmd 启动db2 然后,
从 db2cmd 窗口启动 bash,
然后运行
db2 connect to <db> user <user>
db2 select * from syscat.tables
db2 select 会产生同样的错误。
发生这种情况是因为 bash 将启动另一个子 shell 来执行每个 db2 命令,并且 db2 connect 调用另一个进程 db2bp 实际持有该连接。 当 db2 connect 返回时,子 shell 关闭并且连接丢失。 当我将命令与 ; 连接时也会发生这种情况或 &&。
有没有办法让 bash 不执行子 shell 或至少不执行每个命令?
【问题讨论】:
-
您是否尝试过将所有语句放入一个文件中,然后将该文件传递给“db2”命令?参数“-f 文件名”可用于将输入文件传递给 DB2。
-
这在我的情况下不起作用,因为我在脚本中使用了这些语句的结果。原因是双重的。 1. 我会在 db2 结果中获得连接和连接重置消息,之后我需要解析出我不想解析的消息。 2. 我正在使用不同的选择,我还需要区分其结果。