场景:连接DB2数据库的,jdbc的连接字符串中没有给当前的数据源用户指定默认的schema,而当前的数据源用户下可能有多个schema,则会使用数据源用户默认的schema.
例如:admin用户的默认shema是admin,但是我们需要连接的schema是db2inst1,这时候,使用sql操作数据库的时候,会报42704的错.
解决方案如下:为当前的连接执行默认的schema是db2inst1:
<Resource auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" maxActive="20" maxIdel="10" maxWait="1000" name="jdbc/ZYBIDB" password="db2admin" type="javax.sql.DataSource" url="jdbc:db2://10.27.70.33:60000/dbtest:currentSchema=db2inst1;" username="db2admin" />
特别注意:见上面的红字,currentSchema是区分大小写的,后面的分号也是必须的!
当然,若果你只有查询操作,没有其他的增加\删除\修改之类的操作,那么,也不需要上面的指定默认的currentSchema,可以麻烦一点的,直接在自己的sql语句中增加自己的currentSchema指定,
就可以解决不能找不到对应的schema的问题了,具体的见下:
select count(1) as count from db2inst1.table_name