Connection忘记了当前的架构并抛出了“SQL -204”错误

时间:2015-07-29 07:09:48

标签: java database spring web-applications connection-pooling

我使用的是Spring + WebSphere + DB2,而且我每隔几分钟就会收到以下SQL错误:

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=USERNAME.TABLENAME, DRIVER=4.12.93

这就是我的代码的样子(简化):

public class DataSourceHandler {
    @Resource( name="jdbc/db2" )
    private DataSource db2;
    private Connection conn = null;

    public Connection getConnection(DataSourceType type){
        if(conn == null) {
            conn = ds.getConnection();
            setSchema();
        }
        return conn;
    }
    private void setSchema() {
        Statement st = connection.createStatement();
        st.execute("set current schema = SCHEMA_NAME");
    }
}

每次执行准备好的Statement之前,DataSourceHandler都会确保设置正确的架构。

但是,我经常收到-204错误,表明连接忘记了架构。这发生在整个应用程序的随机位置,也适用于我在异常之前成功执行另一个查询的连接。

我使用多个同时访问数据库的线程。但是,我确保每个帖子都拥有自己的DataSource,因此拥有Connection

我怀疑存在连接池问题但无法找出可能的原因以及如何防止错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以在资源配置中创建连接时设置连接的当前架构: -

URL = “$ {jdbc.url}:currentSchema = $ {schema.name};”