DB2错误:SQL10007N消息-1390“;无法检索。原因代码:“;3“;
在尝试连接到db2 db时,出现以下错误: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也因此而
$ /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解决了这个问题