DB2错误:SQL10007N消息-1390“;无法检索。原因代码:“;3“;

DB2错误:SQL10007N消息-1390“;无法检索。原因代码:“;3“;,db2,dbeaver,Db2,Dbeaver,在尝试连接到db2 db时,出现以下错误: $ /opt/ibm/db2/V10.5/bin/db2 connect to SRVO SQL10007N Message "-1390" could not be retrieved. Reason code: "3". 但是,从DBeaver连接到它时,我没有遇到任何问题。错误的原因可能是什么?消息说: SQL1390C未定义环境变量DB2INSTANCE,或者环境变量为 无效 SQL10007也因此而

在尝试连接到db2 db时,出现以下错误:

$ /opt/ibm/db2/V10.5/bin/db2 connect to SRVO
SQL10007N Message "-1390" could not be retrieved.  Reason code: "3".
但是,从DBeaver连接到它时,我没有遇到任何问题。错误的原因可能是什么?

消息说:

SQL1390C未定义环境变量DB2INSTANCE,或者环境变量为 无效

SQL10007也因此而返回-因此通过将DB2INSTANCE设置为当前实例来修复它

set  DB2INSTANCE=whateveryourinstanceis
补充: 在DBeaver中查找驱动程序时,应指向以下文件的正确位置: db2java.zip db2jcc_license_cu.jar(或类似)
db2jcc4.jar

我的一个Ansible角色有这个问题,它为应用程序执行sql脚本。它发生在我将DB2从11.1.0升级到11.1.4.5(我使用的软件支持的最新版本)之后

设置
DB2INSTANCE
环境变量没有帮助。通过以实例用户的身份手动登录,我发现DB2中还有很多变量:

[db2inst1@cnx-db2 ~]$ env | grep -i db2 | wc -l
16
但是有一个脚本
~/sqllib/db2profile
,它设置了所有相关的环境变量。像这样称呼它在我的职责中起作用:

- name: "Check and create DBs for CNX with user {{ db2.instance.name }}"
  become: yes
  become_user: "{{ db2.instance.name }}"
  shell: |
    . ~/sqllib/db2profile
    apps=("activities" "blogs" "cognos" "communities" "dogear" "files" "forum" "homepage" "mobile" "profiles" "metrics" "pushnotification" "wikis")
    for app in ${apps[*]}
    do
      {{ db2.target }}/bin/db2 -td@ -vf {{ cnx_sql_dir }}/${app}/db2/createDb.sql
      {{ db2.target }}/bin/db2 -td@ -vf {{ cnx_sql_dir }}/${app}/db2/appGrants.sql
    done

在运行
db2
命令之前,需要将正确的
db2profile
文件点入shell会话。例如
~db2inst1/sqllib/db2profile
(其中Db2实例名为db2inst1),请为您的环境使用正确的实例名。当您在这个文件中添加点时,所有必需的环境变量都将被正确设置,包括路径,因此您不需要位于特定的目录中,就可以运行
db2
命令。通常情况下,您可以通过shell启动文件执行此操作。是。我已经用
$DB2INSTANCE=db2inst1$export DB2INSTANCE解决了这个问题