itsource

com.mysql.jdbc 클래스를 로드하고 있습니다.운전기사님.이것은 권장되지 않습니다.새로운 드라이버 클래스는 'com.mysql.cj.jdbc'입니다.드라이버

mycopycode 2022. 9. 14. 22:27
반응형

com.mysql.jdbc 클래스를 로드하고 있습니다.운전기사님.이것은 권장되지 않습니다.새로운 드라이버 클래스는 'com.mysql.cj.jdbc'입니다.드라이버

콘솔에 표시되는 경고는 다음과 같습니다.이 경고와 혼동됩니다.

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.

나는 이 문제를 변경으로 해결했다.application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

로.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

도움이 되었으면 좋겠다

Connector/J API의 Changes in the Connector/J API "java.sql을 구현하는 클래스의 이름.MySQL Connector/J 드라이버가 com.mysql.jdbc에서 변경되었습니다.드라이버는 com.mysql.cj.jdbc.드라이버. 이전 클래스 이름은 더 이상 사용되지 않습니다.

즉, 드라이버의 이름만 변경하면 됩니다.

Class.forName("com.mysql.jdbc.Driver");

로.

Class.forName("com.mysql.cj.jdbc.Driver");

휴지 상태를 사용하는 경우 "hibernate.cfg.xml"에서 다음을 변경합니다.

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

수신인:

<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>

이것으로 충분합니다. :)

ORM 컨피규레이션파일 드라이버 속성 변경:

 <property name="driver" value="com.mysql.jdbc.Driver"/>

로.

<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

경고:-)가 해결됩니다.

"loading class 'com.mysql.jdbc.운전기사님.이것은 권장되지 않습니다.새로운 드라이버 클래스는 'com.mysql.cj.jdbc'입니다.운전자 "는 이상 없습니다.다음과 같이 최신 드라이버를 사용해야 합니다.

Class.forName("com.mysql.cj.jdbc.Driver");

mysql-connector-java-8.0.17에 포함되어 있습니다.Class com.mysql.jdbc가 있습니다.운전자는 더 이상 서비스를 제공하지 않습니다. (경고문도 여기에서 확인할 수 있습니다.)

public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("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.");
    }
}

'운전자는 SPI를 통해 자동으로 등록되며 일반적으로 운전자 클래스를 수동으로 로드할 필요가 없습니다.'라는 문장이 표시됩니다.즉, 다음과 같은 코드를 쓸 수 있습니다.

//Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/world?useSSL=false&serverTimezone=Asia/Shanghai","root","root");

SPI로 인해 드라이버가 자동으로 등록됩니다.어떻게 작동합니까?이것은 java.sql에서 찾을 수 있습니다.드라이버 매니저:

private static void ensureDriversInitialized() {
                          ...
    ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
                          ...
}

mysql-connector-java-XXX.jar에는 'java.sql' 파일도 있습니다.META-INF\services의 드라이버입니다.파일은 다음과 같습니다.

com.mysql.cj.jdbc.Driver

DriverManager.getConnection()을 실행하면 정적 블록도 실행됩니다.따라서 드라이버는 'java.sql' 파일에 자동으로 등록할 수 있습니다.운전기사님.

SPI에 대한 자세한 내용은 SPI와 API의 차이점?

이는 접속할 mysql 버전이 mysql 드라이버 버전보다 낮기 때문입니다.com.mysql.jdbc라는 말이 많아요드라이버가 com.mysql.cj.jdbc로 변경되었습니다.드라이버, 이것으로 문제가 해결되는 것은 아니지만, 주의를 끌 수도 있습니다.

application.properties 파일에서 기존 spring.datasource.driver-class-name 속성을 삭제하고 다음 속성을 추가하십시오.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
        // The newInstance() call is a work around for some
        // broken Java implementations
        Class.forName("com.mysql.cj.jdbc.Driver").newInstance();

application.conf 파일을 다음과 같이 변경하였습니다.그것으로 문제가 해결되었다.

변경 전:

slick {
  dbs {
    default {
      profile = "slick.jdbc.MySQLProfile$"
      db {
        driver = "com.mysql.jdbc.Driver"
        url = "jdbc:mysql://localhost:3306/test"
        user = "root"
        password = "root"
      }
    }
  }
}

변경 후:

slick {
  dbs {
    default {
      profile = "slick.jdbc.MySQLProfile$"
      db {
        **driver = "com.mysql.cj.jdbc.Driver"**
        url = "jdbc:mysql://localhost:3306/test"
        user = "root"
        password = "root"
      }
    }
  }
}

제 경우 Class.forName("com.mysql.jdbc") 행이 있었습니다.드라이버")를 삭제한 후 "com.mysql.jdbc"를 로드할 수 있는 행이 있으면 정상적으로 동작합니다.드라이버'를 삭제하면 더 이상 필요 없습니다.

드라이버명을 「com.mysql.jdbc」에서 변경합니다.드라이버"에서 "com.mysql.cj.jdbc"로 이동합니다.「드라이버」로 해결할 수 있습니다.

JDBC: " " JDBC " " 입니다.Class.forName("com.mysql.cj.jdbc.Driver");

상태일 :<property name="driver" value="com.mysql.cj.jdbc.Driver"/>

Eclipse를 사용하고 있으며 META_INF/context.xml에 MySql 연결 풀을 정의했습니다.내용은 다음과 같습니다.

<Context>
  <Resource name="..." 
    driverClassName="com.mysql.jdbc.Driver" 
    ... />
</Context>

"driverClassName"으로 시작하는 행을 다음과 같이 변경했더니 문제가 없어졌습니다.

driverClassName="com.mysql.cj.jdbc.Driver"

입니다.Class.forName("com.mysql.jdbc.Driver");로로 합니다.Class.forName("com.mysql.cj.jdbc.Driver");application.properties 。저는 이게 가장 빠르고 좋은 방법이지만 다른 사람의 대답도 존중합니다.

YML 파일에 기반한 구성을 사용하는 경우 지정된 파일 내에서 조정해야 하는 속성은 다음과 같습니다.

*driverClassName: com.mysql.cj.jdbc.Driver*

드라이버는 SPI를 통해 자동으로 등록되며 일반적으로 드라이버 클래스를 수동으로 로드할 필요가 없습니다."com.mysql.cj.jdbc"를 변경합니다.드라이버"

이 주의는 log4jdbc-spring-boot-starter 라이브러리를 직접 사용하는 경우에도 표시됩니다.

다만, 올바른 드라이버를 직접 선택하는 설정이 있습니다.을 당신의 것 your your this에 넣으세요.application.properties:

log4jdbc.drivers=com.mysql.cj.jdbc.Driver
log4jdbc.auto.load.popular.drivers=false

Github 매뉴얼 참조

커넥터가 에서 이 되는 경우 MySQL은 이 메시지를 표시합니다.8.xMySQL metstore)

hive-site.xml그리고 변화:및 변경:

   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
      <description>MySQL JDBC driver class</description>
   </property>

로.

   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.jdbc.Driver</value>
      <description>MySQL JDBC driver class</description>
   </property>

솔루션: org.springframework.부트 2.0.5.풀어주다

오히려 org.springframework.기동합니다.풀어주다

작업 예:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_db_name?autoReconnect=true&useSSL=false", "root", "root");

이렇게 부르면 될 것 같아요.

내 경험상으로는저는 웹용으로 jsp를 사용하고 있었습니다.그때 mysql 5와 mysql connector jar 8을 사용하고 있습니다.그래서 버전 문제로 인해 저는 이런 문제에 직면하게 되었습니다.mysql connector jar file을 교체하여 정확한 버전의 mysql을 해결합니다.

Connector/J API에는 버전 5.1에서8.0으로 중요한 변경이 있습니다.사용 중인 버전이 5.1보다 낮은 경우 API 호출을 적절히 조정해야 할 수 있습니다.

자세한 내용은 다음 링크의 MySQL을 참조하십시오.https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-api-changes.html

이 부분부분만 삭제해 주세요 이를 삭제합니다.Class.forName("com.mysql.jdbc.Driver")당신의 code당신의에서 암호에서

왜냐하면 기계가 경고하고 있기 때문에

드라이버는 SPI를 통해 자동으로 등록되며 일반적으로 드라이버 클래스를 수동으로 로드할 필요가 없습니다."

드라이버는 기본적으로 자동으로 등록되기 때문에 포함할 필요가 없습니다.

만약 당신이 당신의 이게 있으면에 이것을 가지고 있다.application.properties:

spring.datasource.driverClassName=com.mysql.jdbc.Driver,,

이 행을 삭제하면 오류를 제거할 수 있습니다.

이제 다음 형식에 따라 데이터베이스 연결이 생성됩니다.

public void Connect() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/JavaCRUD","root","");
        }catch(ClassNotFoundException ex) {
            
        } catch (SQLException ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
        }
    }

이 코드를 이렇게 편집하세요.

    public void Connect() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/JavaCRUD","root","");
        }catch(ClassNotFoundException ex) {
            
        } catch (SQLException ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
        }
    }

이제 실행됩니다.

 Class.forName("com.mysql.jdbc.Driver"); //it's old the mysql driver 
 

오래된 새 드라이버 변경 ------------------------------------------------------------

 Class.forName("com.mysql.cj.jdbc.Driver"); //it's new the mysql driver and paste same place and resolved your problem 

컨피규레이션파일 application.properties에서 line on configuration을 클릭합니다.

여기에 이미지 설명 입력

왜냐하면 봄은 말한다:드라이버는 SPI를 통해 자동으로 등록되며 일반적으로 드라이버 클래스를 수동으로 로드할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/52032739/loading-class-com-mysql-jdbc-driver-this-is-deprecated-the-new-driver-class

반응형