error de java: com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited

Cuando JDBC usa el grupo de conexiones Druid para conectarse a la base de datos, se encuentra un error: com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited, la información específica del error es la siguiente:

En el mensaje de error de la página web, puede ver que es un error obtener el nombre del controlador.

Solucionar problemas:

La clase de herramienta de grupo de conexiones DruidUtils.java se utiliza aquí para cargar el archivo de configuración de la base de datos druid.properties

public class DruidUtils {

    //1.定义成员变量
    public static DataSource dataSource;

    //2.静态代码块
    static{
        try {
            //3.创建属性集对象
            Properties p = new Properties();

            //4.加载配置文件 Druid 连接池不能够主动加载配置文件 ,需要指定文件
            InputStream inputStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");

            //5. 使用Properties对象的 load方法 从字节流中读取配置信息
            p.load(inputStream);

            //6. 通过工厂类获取连接池对象
            dataSource = DruidDataSourceFactory.createDataSource(p);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    、、、
}

Pensé que podría ser un error al cargar el archivo de configuración, así que debug inició el proyecto y vi que los valores de propiedad obtenidos estaban todos vacíos.

Verifique la configuración del archivo de configuración, el valor de la clave es realmente incorrecto y finalmente corríjalo de la siguiente manera:

Configuración de mysql5.0:

#mysql5.0的驱动名称
driverClassName=com.mysql.jdbc.Driver
#注册驱动,convertToNull,返回 null 来替代 0000-00-00 这样的日期
#加上zeroDateTimeBehavior是为了解决异常:java.sql.SQLException: Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#连接数据库的用户名
username=root
#连接数据库的密码
password=123456
#初始化时池中建立的物理连接个数
initialSize=10
#最大的可活跃的连接池数量
maxActive=20
#获取连接时最大等待时间,单位毫秒,超过连接就会失效
maxWait=3000

Configuración de mysql8.0:

#驱动加载
#mysql8.0的驱动名称
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
#连接数据库的用户名
username=root
#连接数据库的密码
password=123456
#初始化时池中建立的物理连接个数
initialSize=10
#最大的可活跃的连接池数量
maxActive=20
#获取连接时最大等待时间,单位毫秒,超过连接就会失效
maxWait=3000

Se puede ver que en el mysql 8.0 futuro, java el paquete de controladores ha cambiado de  com.mysql.jdbc.Driver a com.mysql.cj.jdbc.Driver。

También existe la configuración de url.Si es mysql8.0, se debe configurar una zona horaria (serverTimezone), y com.mysql.cj.jdbc.Driver esta zona horaria es necesaria;

De lo contrario, se informará un error:

The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Ejecute de nuevo, la carga se ha realizado correctamente y se puede acceder a la base de datos normalmente, ¡y el problema está resuelto!

Estructura del proyecto:

 

Precauciones:

1. La versión de la base de datos mysql utilizada y la versión del jar del controlador dependiente deben ser iguales, si son diferentes, se reportará un error;

2. La configuración de driverClassName y url mencionada anteriormente debe corresponder a la versión de mysql correspondiente.

 

 

Supongo que te gusta

Origin blog.csdn.net/u012660464/article/details/110236485
Recomendado
Clasificación