場景:連接DB2資料庫的,jdbc的連接字元串中沒有給當前的數據源用戶指定預設的schema,而當前的數據源用戶下可能有多個schema,則會使用數據源用戶預設的schema. 例如:admin用戶的預設shema是admin,但是我們需要連接的schema是db2inst1,這時候,使用sql操作
場景:連接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