这是警告我进入控制台,我对此警告感到困惑
正在加载类com.mysql.jdbc.Driver'. This is deprecated. The new driver class is
com.mysql.cj.jdbc.Driver'。通过SPI自动注册驱动程序,通常不需要手动加载驱动程序类。
答案 0 :(得分:16)
我通过更改application.properties
来解决了这个问题
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
到
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
希望有帮助
答案 1 :(得分:13)
如果您正在使用Hibernate,请在“ 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>
那应该做:)
答案 2 :(得分:3)
这是因为要连接的mysql版本低于mysql驱动程序版本。 许多人说com.mysql.jdbc.Driver更改为com.mysql.cj.jdbc.Driver,虽然这不能解决问题,但也应引起注意。
答案 3 :(得分:1)
从
更改ORM配置文件中的驱动程序属性 <property name="driver" value="com.mysql.jdbc.Driver"/>
到
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
这将解决警告:-)
答案 4 :(得分:1)
如下更改了我的 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"
}
}
}
}
答案 5 :(得分:1)
已清除句子“正在加载类'com.mysql.jdbc.Driver'。已弃用。新的驱动程序类为'com.mysql.cj.jdbc.Driver'”。您应该使用更新的驱动程序,如下所示:
<input
type="number"
value={props.number || ""}
onChange={e => props.updateValue({ number: +e.target.value })}
/>
在mysql-connector-java-8.0.17中。您会发现com.mysql.jdbc.Driver类不再提供服务。 (您也可以从此处找到警告。)
Class.forName("com.mysql.cj.jdbc.Driver");
语句“通过SPI自动注册驱动程序,通常不需要手动加载驱动程序类”。这意味着可以这样编写代码:
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,驱动程序会自动注册。它是如何工作的?您可以从java.sql.DriverManager中找到它:
//Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/world?useSSL=false&serverTimezone=Asia/Shanghai","root","root");
在mysql-connector-java-XXX.jar中,您还可以在META-INF \ services中找到文件“ java.sql.Driver”。该文件如下:
private static void ensureDriversInitialized() {
...
ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
...
}
当您运行DriverManager.getConnection()时,静态块也将开始运行。因此可以将驱动程序自动注册到文件'java.sql.Driver'。
有关SPI的更多信息-> Difference between SPI and API?。
答案 6 :(得分:0)
通过将驱动程序名称从“ com.mysql.jdbc.Driver”更改为“ com.mysql.cj.jdbc.Driver”将解决此问题。
如果是简单的JDBC连接:
Class.forName("com.mysql.cj.jdbc.Driver");
在休眠状态下:
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
答案 7 :(得分:0)
我只将这行代码 Class.forName("com.mysql.jdbc.Driver");
更改为 Class.forName("com.mysql.cj.jdbc.Driver");
。我看到其他一些人会访问 application.properties 并添加一些内容。对我来说,这是最好和最快的方式,但我也尊重其他人的回答。
答案 8 :(得分:0)
请删除 application.properties 文件中现有的 spring.datasource.driver-class-name 属性并添加以下属性。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
答案 9 :(得分:0)
现在你的数据库连接就是按照这个格式创建的。
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();
}
}
现在它将执行。
答案 10 :(得分:0)
如果您的 application.properties
中有这个:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
,
您可以通过删除该行来消除错误。
答案 11 :(得分:0)
只需从您的代码中删除此部分Class.forName("com.mysql.jdbc.Driver")
因为机器抛出警告
通过SPI自动注册驱动程序,通常不需要手动加载驱动程序类。”
意味着不需要包含它,因为默认情况下该驱动程序会自动为您注册。
答案 12 :(得分:0)
如果在Hive中使用新的MySQL连接器8.x
(MySQL metastore)看到此消息
打开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>
答案 13 :(得分:0)
如果直接使用 log4jdbc-spring-boot-starter 库,也会出现此警告。
但是,有一个配置可以自己选择正确的驱动程序。将其放入您的application.properties
:
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
log4jdbc.auto.load.popular.drivers=false
请参阅有关Github的文档
答案 14 :(得分:0)
我正在使用Eclipse,并在META_INF / context.xml中定义了MySql连接池。其内容的一部分是:
<Context>
<Resource name="..."
driverClassName="com.mysql.jdbc.Driver"
... />
</Context>
当我如下更改以“ driverClassName”开头的行时,问题就消失了。
driverClassName="com.mysql.cj.jdbc.Driver"
答案 15 :(得分:0)
通过SPI自动注册驱动程序,通常不需要手动加载驱动程序类。只需更改“ com.mysql.cj.jdbc.Driver”
答案 16 :(得分:0)
如果使用基于YML文件的配置,则以下将是需要在给定文件内部进行调整的属性:
*driverClassName: com.mysql.cj.jdbc.Driver*
答案 17 :(得分:0)
就我而言,我有一行 Class.forName(“ com.mysql.jdbc.Driver”); 删除此行代码后工作正常 如果您有任何要加载“ com.mysql.jdbc.Driver”的行,请将其删除,
答案 18 :(得分:0)
根据Changes in the Connector/J API“在MySQL Connector / J中实现java.sql.Driver的类的名称已从 com.mysql.jdbc.Driver 更改为 com。 mysql.cj.jdbc.Driver 。旧类名称已被弃用。“
这意味着您只需要更改驱动程序的名称:
Class.forName("com.mysql.jdbc.Driver");
到
Class.forName("com.mysql.cj.jdbc.Driver");
答案 19 :(得分:0)
从5.1版到8.0版对Connector / J API进行了重要更改。如果您使用的版本低于5.1,则可能需要相应地调整API调用。
请通过以下链接访问MySQL,以获取更多信息https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-api-changes.html
答案 20 :(得分:0)
工作示例:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_db_name?autoReconnect=true&useSSL=false", "root", "root");
像这样的呼叫将起作用。
答案 21 :(得分:0)
// The newInstance() call is a work around for some
// broken Java implementations
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
答案 22 :(得分:0)
in my experience. I was using jsp for web. at that time I use mysql 5 and mysql connecter jar 8. So due to the version problem I face this kind of problem. I solve by replace the mysql connector jar file the exact version mysql.
答案 23 :(得分:0)
我的解决方案: org.springframework.boot 2.0.5.RELEASE
相反:org.springframework.boot 2.1.0.RELEASE