我使用的是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
。
我怀疑存在连接池问题但无法找出可能的原因以及如何防止错误。有什么想法吗?
答案 0 :(得分:0)
您可以在资源配置中创建连接时设置连接的当前架构: -
URL = “$ {jdbc.url}:currentSchema = $ {schema.name};”