MySql連接 alibaba.druid.support.logging.JakartaCommonsLoggingImpl.error create connection SQLException


在SpringMVC+Spring+MyBatis整合應用中訪問Mysql出現以下報錯
具體報錯:

19-Feb-2021 11:08:54.808 嚴重 [Druid-ConnectionPool-Create-1512829159] com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl.error create connection SQLException, url: jdbc:mysql://localhost:3306/springdb, errorCode 0, state S1000
	java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
		at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
		at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
		at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
		at com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1734)
		at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3539)
		at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2151)
		at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
		at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
		at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
		at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
		at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
		at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
		at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
		at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
		at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
		at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1570)
		at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1636)
		at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2505)

檢查,查詢mysql的版本發現本地的是8.0.22,更改maven的pom.xml文件的mysql驅動版本為8.0.22,刷新pom.xml,重新啟動應用即可

   <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

百度過程中還發現driverClassName有可能會報這個錯,但是這里的不是這個原因

driverClassName: com.mysql.jdbc.Driver    # mysql-connector-java 5.x及之前版本中的
driverClassName: com.mysql.cj.jdbc.Driver # mysql-connector-java 6.x及后續版本中的

這里有一個疑問?

  1. driverClassName沒配置應用也可以正常訪問數據庫,配置了也可以,這個是什么原理?
    百度了暫時沒找到為什么
  2. characterEncoding=UTF-8 加不加都可以
    <!--聲明數據源,連接數據庫-->
    <context:property-placeholder location="classpath:conf/jdbc.properties"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
<!--        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>-->
<!--        <property name="url" value="${jdbc.url}?characterEncoding=UTF-8"/>-->
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

問題1:driverClassName沒配置應用也可以正常訪問數據庫,配置了也可以,這個是什么原理?
有大佬指點可能是以下情況(未驗證,先記錄了后面有時間在驗證吧)

  1. 在mysql的驅動jar中已經配置了

  2. 在com.alibaba.druid.pool.DruidDataSource配置的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM