場景:連接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