報錯信息:
"C:\Program Files\Java\jdk1.8.0_211\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.4\lib\idea_rt.jar=54826:C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_211\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_211\jre\lib\rt.jar;D:\file\java_web_dev\IdeaProject\mybatis_test\target\test-classes;D:\file\java_web_dev\IdeaProject\mybatis_test\target\classes;E:\software\mysql\mysql-8.0.18-winx64\mysql-connector-java-8.0.18.jar;C:\Users\lonelyisland\.m2\repository\org\mybatis\mybatis\3.5.4\mybatis-3.5.4.jar;C:\Users\lonelyisland\.m2\repository\mysql\mysql-connector-java\8.0.18\mysql-connector-java-8.0.18.jar;C:\Users\lonelyisland\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar;C:\Users\lonelyisland\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;C:\Users\lonelyisland\.m2\repository\junit\junit\4.11\junit-4.11.jar;C:\Users\lonelyisland\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.syz.test.MybatisTest
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.sql.SQLException: No suitable driver found for jdbc://localhost:3306/mybatis_test
### The error may exist in com/syz/dao/IUserDao.xml
### The error may involve com.syz.dao.IUserDao.findAll
### The error occurred while executing a query
### Cause: java.sql.SQLException: No suitable driver found for jdbc://localhost:3306/mybatis_test
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:144)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
at com.sun.proxy.$Proxy0.findAll(Unknown Source)
at com.syz.test.MybatisTest.main(MybatisTest.java:30)
Caused by: java.sql.SQLException: No suitable driver found for jdbc://localhost:3306/mybatis_test
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:221)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:216)
at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:95)
at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:422)
at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:138)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:60)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
... 7 more
Process finished with exit code 1
idea鏈接mysql數據庫見下面參考鏈接1,需要注意的一點,如果數據庫沒有設置全局的serverTimeZone這里報錯,然后去哪個設置頁面Advanced那里把該項寫為Asia/Shanghai就ok,idea連接后可以在右側看到如圖所示效果
然后嘗試連接后並未解決問題(尷尬XD 這步只是起到了數據庫連接工具,感覺這個功能集成了datagrip的一些特性),再找其他方法
關鍵報錯是這句話:
參考鏈接2也列了幾種可能得錯誤。。。也不是
參考鏈接3終於解決,算是一個非常低級的錯誤。。。寫SqlMapConfig.xml的時候
錯誤寫法
<property name="url" value="jdbc:mysql//localhost:3306/mybatis_test"/>
正確寫法,注意有冒號。。。
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/>
算是一個教訓,也是一個no suitable driver found for jdbc的一個解決匯總
另外,如果數據庫沒有設置全局serverTimeZone,這里還可能報個錯,一個簡單的解決是在url后?加上一些參數(包括時區)
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT"/>
還有一個地方注意,xml中的&必須寫為&否則這里報錯
再改:
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT"/>
到這里我出現的關於idea數據庫,以及mybatis數據庫配置出現的問題全部解決,小結如下:
- mybatis出現就是為了解決jdbc配置問題,讓使用者更加專注於問題本身,但是配置過程需小心(也是我不熟悉配置的原因,use it or lose it,慢慢熟悉)
- 配置文件SqlMapConfig.xml中url需要注意"mysql:"的":"
- xml文件中的";"需要用"&"代替
參考:
idea鏈接mysql數據庫
No Suitable Driver Found For Jdbc 解決方法
mybatis遇到的問題----沒有合適的驅動(No suitable driver found for jdbc)
server.xml; lineNumber: 44; columnNumber: 95; 對實體 "characterEncoding" 的引用必須以 ';' 分隔符結尾。
異常:java.sql.SQLException: The server time zone value '?й???????' is unrecognized or represents more