今天在整合SpringMVC與mybatis的時候遇到了一個異常:
四月 24, 2017 10:37:31 下午 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/Test0424SM_zhenghe] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: ORA-01017: invalid username/password; logon denied ] with root cause java.sql.SQLException: ORA-01017: invalid username/password; logon denied
以上錯誤是在搭建string+truts+ibatis框架的時候用spring鏈接oracle數據庫的時候報的錯誤。
下面仔細分析一下:
首先最重要的一點你要確定你的賬號密碼可以登錄plsql。
1.如果你的賬號和密碼可以登錄plsql,那么證明你的用戶名密碼是沒有錯誤的,只有可能是你的配置文件里面出錯,仔細找一下是不是你的url驅動鏈接地址多了空格或者配置文件里面少了$符號,亦或者是字段名是特殊字段,譬如不能用username來定義用戶名(username);再不然就要用系統用戶登錄plsql , 查詢當前的所有用戶: select * from dba_users; 查看狀態是否被鎖(LOCKED ),如果你數據庫連接的用戶被鎖,.給帳號解鎖alter user user1 account unlock; 有很多是用戶被鎖了導致的。
2.或者重新create一個用戶,把報錯的用戶的所有權限轉到新的用戶上面。
3.還有就是一個登陸 sysdba和Normal的問題,有很多的時候就是這個問題困擾了開發者。
解決辦法:
properties對象.put("user",admin);//用戶
properties對象put("password",admin); //密碼
有些連接時這樣的代碼,如果是oralce數據庫的話,報上面你的錯。你可以試着把下面的代碼加上!
properties對象.put("internal_logon","sysdba");