簡體   English   中英

無法為連接 URL 'jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC' 創建類 '' 的 JDBC 驅動程序

[英]Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC'

我創建了一個屬性文件

url=jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC
username=root
password=root

我創建了一個連接池

    private static DataSource dataSource; 
static {

    try {
        //load properties file
        InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
        //load input stream
        Properties props = new Properties();
        props.load(is);
        //create data source
        dataSource = BasicDataSourceFactory.createDataSource(props);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        throw new RuntimeException(e);
    }
}

然后我得到了問題。 我搜索了一些答案,他們說驅動程序需要像 Class.forName(com.mysql.jdbc.Driver) 一樣注冊。 但是我這個版本的驅動好像可以自己注冊,所以這個方案不行。

錯誤

2018 年 10 月 2 日上午 9:46:09 org.apache.catalina.core.StandardContext 重新加載信息:重新加載名稱為 [/WEB13] 的上下文已完成

java.sql.SQLException:無法在 org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource .java:2224) 在 org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2104) 在 org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563) 在 org.apache.commons。 dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:319) 在 org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:327) 在 com.itheima.login.LoginServlet.doGet(LoginServlet.java:36) 在 javax .servlet.http.HttpServlet.service(HttpServlet.java:634) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.serv er.WsFilter.doFilter(WsFilter.java:53) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticatorBase.Authenticator. (AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache。 catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java) 343) 在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) ache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1415) 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent .ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748) ) 引起:java.sql.SQLException: 在 org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2209) 的 java.sql.DriverManager.getDriver(DriverManager.java:315) 沒有合適的驅動程序... 29 更多

@朱紫妍,

您在db.properties添加了錯誤的網址:

db 屬性中的 url 類似於jdbc:mysql://localhost:3306/web13 ,其中 web13 是您的數據庫名稱。

另外你缺少的連接池的一些方法描述在這里

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtils {
    private static DataSource dataSource;
    static {
        try {
            // 1.Load the properties file input stream
            InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
            // 2.Load the input stream
            Properties props = new Properties();
            props.load(is);
            // 3.create data source
            dataSource = BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

您的屬性文件缺少屬性,這意味着 DBCP 無法創建/初始化驅動程序。

你需要添加

driverClassName = org.mysql.jdbc.Driver

我只是遇到了同樣的問題,但我正在使用 glassfish。 如果將來有人在嘗試在 glassfish 服務器中建立數據庫連接時遇到此問題,解決方案是將java mysql connector添加到 glassfish 服務器,那么您的問題就解決了。

轉到 .../glassfish-installation-folder/Glassfish[your-version]/glassfish/lib/here-paste-your-mysql-connector-driver.jar

這是我的榮幸。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM