【问题标题】:DB2 error: SQL10007N Message "-1390" could not be retrieved. Reason code: "3"DB2 错误:SQL10007N 无法检索到消息“-1390”。原因代码:“3”
【发布时间】:2020-11-03 10:39:52
【问题描述】:

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

$ /opt/ibm/db2/V10.5/bin/db2 connect to SRVO
SQL10007N Message "-1390" could not be retrieved.  Reason code: "3".

但是,从 DBeaver 连接到它时我没有遇到任何问题。错误的原因可能是什么?

【问题讨论】:

  • 在运行db2 命令之前,您需要在shell 会话中添加正确的db2profile 文件。例如 . ~db2inst1/sqllib/db2profile(您的 Db2-instance-name 是 db2inst1),请为您的环境使用正确的实例名称。当您在此文件中添加点时,将正确设置所有必需的环境变量,包括 PATH,因此您无需在特定目录中即可运行 db2 命令。通常你通过你的 shell 启动文件来做这个点。

标签: db2 dbeaver


【解决方案1】:

消息说:

SQL1390C 环境变量 DB2INSTANCE 未定义或未定义 无效。

并且 SQL10007 也因此返回 - 因此通过将 DB2INSTANCE 设置为您的当前实例来修复它。

set  DB2INSTANCE=whateveryourinstanceis

补充: DBeaver 中的驱动程序设置应指向以下文件的正确位置: db2java.zip db2jcc_license_cu.jar(或类似的) db2jcc4.jar

【讨论】:

  • 是的。我已经用$ DB2INSTANCE=db2inst1 $ export DB2INSTANCE 解决了
【解决方案2】:

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

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

[db2inst1@cnx-db2 ~]$ env | grep -i db2 | wc -l
16

但是有一个脚本~/sqllib/db2profile 可以设置所有相关的环境变量。像这样调用它适用于我的 Ansible 角色:

- 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多