我需要运行2个DB2 sql脚本。我试图将它们都放在bash脚本中并执行它们。
这是script.sh:
#!/bin/bash
db2 -tf firstscript.sql;
db2 -tf secondscript.sql;
当我运行它时,我收到以下错误:
DB21034E该命令作为SQL语句处理,因为它是 不是有效的命令行处理器命令。在SQL处理期间 返回:SQL1024N数据库连接不存在。 SQLSTATE = 08003
但我已确保数据库连接已存在。
我认为sql脚本中的命令不是按顺序执行的。
因为当我单独运行每个命令时,没有错误。
此外,当我同时运行两个内联命令,即db2 -tf firstscript.sql;db2 -tf firstscript.sql
时,即使这样代码也可以运行。
我认为它可能与#!/bin/bash
有关,所以我从script.sh文件中删除它然后执行它。即使这样,它也会返回相同的错误。
可能出现的问题及其解决方案是什么?
答案 0 :(得分:0)
当您建立连接时,它将保留在您当前的环境中。当你调用一个bash脚本时,它会创建一个子shell,并且没有任何连接。
为了解决这个问题,您需要通过获取脚本来重用当前环境(如@ jm666所说):
. ./script.sh
确保在脚本名称前面有一个空格后跟一个空格。
db2 connect to sample
. ./script.sh
仅供参考,脚本中的命令将按照您的定义顺序执行。