首页 > 解决方案 > IIB 节点退出且无响应 MYSQL ODBC 数据源

问题描述

我正在尝试让 ODBC 与 IIB 10 一起工作,但我的节点在调用 state.select 时没有响应而退出。我认为我的 ODBC 设置有问题。系统日志不显示任何错误,并且调试器在 state.select 上崩溃

这是我的代码:

    try {
     outP = new PrintWriter(new BufferedWriter(new FileWriter("/tmp/myfile.txt", true)));
outP.println("Start");
        MbSQLStatement state = createSQLStatement( "MYSQL", 
            "SET OutputRoot.XMLNS.integer[] = PASSTHRU('SELECT * FROM " + "test" + "');" );

         state.select( inAssembly, newAssembly );

    } catch (Exception e) {
    outP.println(e);
    outP.flush();
    outP.close();
}

结果:myfile.txt 仅包含文本“Start”,捕获从未运行

我的 ODBC 设置

$odbcinst -j
unixODBC 2.3.4

DRIVERS............: /home/ds/iib-10.0.0.13/ie02/etc/odbcinst.ini
SYSTEM DATA SOURCES: /home/ds/iib-10.0.0.13/ie02/etc/odbc.ini
FILE DATA SOURCES..: /home/ds/iib-10.0.0.13/ie02/etc/ODBCDataSources
USER DATA SOURCES..: /home/ds/iib-10.0.0.13/server/ODBC/unixodbc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

[MySQL]
Description=MySQL driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
TraceFile = /tmp/sql.log

[MYSQL]
Description=MYSQL DB
Driver=MySQL
Database=test
Server=127.0.0.1
Port=3306

标签: unixodbcibm-integration-bus

解决方案


尝试将属性设置setThrowExceptionOnDatabaseError为 true。

state.setThrowExceptionOnDatabaseError(true);

如果在执行此语句期间发生数据库错误,则行为由“throwExceptionOnDatabaseError”属性的值确定。如果设置为 true(默认值),则会抛出异常,如果在 try/catch 块中运行,则可以捕获该异常

(来源)


推荐阅读