我遵循留档并创建了一些与给定示例完全相同的源代码。当我运行我的代码时,我得到了这个异常:
Java语言lang.RuntimeException:驱动程序组织。mariadb。jdbc。驱动程序声称不接受jdbcUrl,jdbc:h2:mem:testdb;DB\U CLOSE\U DELAY=-1;DB\u CLOSE\u ON\u EXIT=FALSE
奇怪的是有两种东西混合在一起:
这些是我的豆子:
@Bean
@Primary
@ConfigurationProperties("datasources.first")
public DataSourceProperties firstDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("datasources.first.configuration")
public HikariDataSource firstDataSource() {
return firstDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
@Bean
@ConfigurationProperties("datasources.second")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("datasources.second.configuration")
public HikariDataSource secondDataSource() {
return secondDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
我的application.yml是这样的:
datasources:
first:
jdbcUrl: jdbc:mariadb://...
username: ...
password: ...
driver-class-name: org.mariadb.jdbc.Driver
second:
jdbcUrl: jdbc:h2:/tmp/test;DB_CLOSE_ON_EXIT=FALSE
username: ...
password: ...
driver-class-name: org.h2.Driver
这是导致异常的代码:
@Component
public class Updater {
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
Queries queries;
public List<User> getActiveUsers() throws Exception {
List<User> users = jdbcTemplate.query(queries.getActive(), new UserRowMapper());
return users;
}
为了进一步诊断这个问题,我启用了configprops和beanendpoint,并检查了它们的输出。配置看起来不错,bean也不错:
配置(众多配置之一):
"firstDataSourceProperties": {
"prefix": "datasources.first",
"properties": {
"password": "******",
"initializationMode": "EMBEDDED",
"driverClassName": "org.mariadb.jdbc.Driver",
"generateUniqueName": false,
"xa": {
"properties": {}
},
"separator": ";",
"platform": "all",
"continueOnError": false,
"username": "..."
}
Bean(众多Bean之一):
"firstDataSource": {
"aliases": [],
"scope": "singleton",
"type": "com.zaxxer.hikari.HikariDataSource",
"resource": "...Application",
"dependencies": [
"firstDataSourceProperties"
]
}
我使用Spring Boot 2.2.6
这个问题是由于我不理解数据源属性和HikariDataSource之间的相互作用造成的。
我发现jdbcUrl没有携带我配置的值,这可以从firstDataSource的详细信息中看到:
"firstDataSource": {
"prefix": "datasources.first.configuration",
"properties": {
"initializationFailTimeout": 1,
"validationTimeout": 5000,
"readOnly": false,
"registerMbeans": false,
"healthCheckProperties": {},
"isolateInternalQueries": false,
"leakDetectionThreshold": 0,
"maxLifetime": 1800000,
"minimumIdle": 10,
"metricsTrackerFactory": {},
"allowPoolSuspension": false,
"idleTimeout": 600000,
"dataSourceProperties": {},
"driverClassName": "org.mariadb.jdbc.Driver",
"jdbcUrl": "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE",
"loginTimeout": 0,
"maximumPoolSize": 10,
"autoCommit": true,
"connectionTimeout": 30000,
"username": "...",
"poolName": "HikariPool-1"
}
如您所见,jdbcUrl地址为h2。这是因为我在数据源中设置了“我的”预期url。第一jdbcUrl。但在此之后,数据源的(不存在)值。第一配置已读取未配置的jdbcUrl,显然已设置为默认值。
我改变我的application.yml后,它的工作:
datasources:
first:
username: ...
password: ...
driver-class-name: org.mariadb.jdbc.Driver
configuration:
jdbcUrl: jdbc:mariadb://...
我需要决定将哪个值放在哪里,用户名和密码也可以移到更深一层,但这是另一回事。。。
问题内容: 我正在尝试使用JDBC驱动程序将android应用程序连接到服务器(PostgreSQL),但是出现此错误: 我尝试了很多事情,例如在路径中添加驱动程序的地址,但没有任何效果。我遵循了本教程:http : //appliedcoffeetechnology.tumblr.com/post/10657124340,并在构建路径中添加了驱动程序JDBC4(我也尝试过JDBC3)。 每个人都
对于InterClient7.5.1和8.1.5,在Java8中创建新的JDBC连接失败 此类似乎被InterClientJDBC库引用或使用。Java7不会发生错误。是否有方法解决此错误? 此代码重现了Java 8上的问题: 输出: interbase.interclient.Connection处线程“main”java.lang.NoClassDefFoundError:sun/io/Byt
TL;DR:同时使用Hive和MySql JDBC有问题吗? 我正在开发一个应用程序,它使用MySql JDBC驱动程序执行多个SQL查询,然后它还使用Hive JDBC发送另一个Hive查询。 现在发生的情况是,MySql查询正常工作,当代码尝试执行配置单元查询时,它会抛出以下异常: 现在,在抛出这个异常之后,查询将正确执行。 我的猜测是,由于我同时加载了MySql和Hive驱动程序,MySql
我正在尝试使用tomcat jdbc连接池,并在我的应用程序context.xml文件中定义了它。 类<code>net.sf.log4jdbc。DriverSpy是在<code>log4jdbc4-1.2.jar Tomcat使用它的类加载驱动程序: 为null,并且正在尝试通过加载驱动程序类。据我所知,在这种情况下,驱动程序类正在加载与相同的类加载器实例。这是,如果我的jar在tomcat库中
我正在尝试使用本教程连接Oracle数据库。当我使用命令行:java-cp c:\jdbc-test\ojdbc6.jar;c:\jdbc-test OracleJDBC我已经将ojdbc6.jar与OracleJDBC.java放在同一个文件夹中。现在我需要在Eclipse上运行它,但它给我一个错误: 是因为OJDBC6.jar位置吗?
我正在尝试在android应用程序中使用JDBC连接到SQL Server。我导入了sqljdbc4。jar进入我的应用程序,但当我 conn=驾驶员管理器。getConnection(连接字符串); 我得到下面的错误:连接字符串是 jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;加密=快速;用户=用户名;密码=密码; 谁能告诉我出了什么问题吗?如果我将相同的代码放入常