druid.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 spring.datasource.druid.max-wait=60000 spring.datasource.druid.time-between-eviction-runs-millis=60000 spring.datasource.druid.min-evictable-idle-time-millis=30000 spring.datasource.druid.validation-query=SELECT 'x' spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 spring.datasource.druid.filters=stat,wall spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin spring.datasource.druid.stat-view-servlet.reset-enable=false spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,* spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.web-stat-filter.exclusions=".js,.gif,.jpg,.png,.css,.ico,/druid/" spring.datasource.druid.web-stat-filter.url-pattern=/
DBUtils.java
public DataSource getDataSource(String ip, String port, String username, String password, String dbName) { DataSource dataSource = null; try { Properties properties = new Properties(); // properties.load(new FileReader("src/main/resources/druid.properties")); properties.load(MySQLDBUtils.class.getClassLoader().getResourceAsStream("druid.properties")); properties.setProperty("spring.datasource.druid.url", String.format("jdbc:mysql://%s:%s/%s", ip, port, dbName)); properties.setProperty("spring.datasource.druid.username", username); properties.setProperty("spring.datasource.druid.password", password); dataSource = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { log.error("创建Druid数据源失败{[]}", e); } return dataSource; }
执行上述代码后会报错:
10:50:47.324 [main] ERROR com.alibaba.druid.pool.DruidDataSource - {dataSource-1} init error java.sql.SQLException: url not set
原提问者GitHub用户MstString
java.sql.SQLException: url not set这个错误意味着Druid数据源的URL配置有问题。
具体来说,Druid在初始化时会检查URL是否配置,若没配置则报这个错误。
错误信息表明在初始化Druid数据源时出现了问题,报错信息为"java.sql.SQLException: url not set",意味着没有设置连接URL。
在你的代码中,你尝试通过加载druid.properties文件来获取Druid连接池的配置,然后设置连接URL、用户名和密码等属性。然而,由于Druid连接池的配置文件加载是在Spring Boot的自动配置中进行的,直接加载druid.properties文件可能无法正确设置连接URL。
报错信息显示 "url not set",意味着在配置文件 "druid.properties" 中未设置数据库的 URL。
为了解决这个问题,您可以在 druid.properties
文件中添加以下属性:
spring.datasource.druid.url=jdbc:mysql://localhost:3306/db_name
将 localhost
替换为您的数据库主机名或 IP 地址,将 3306
替换为您的数据库端口号,以及 db_name
替换为您要连接的数据库名称。
在 DBUtils.java
文件中的代码中,根据您的需求,您可以修改以下行:
properties.setProperty("spring.datasource.druid.url", String.format("jdbc:mysql://%s:%s/%s", ip, port, dbName));
将其中的 dbname
替换为您要连接的数据库名称。
执行这些更改后,应该能够成功创建 Druid 数据源并连接到数据库。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。