连接双数据源启动报错

021-01-25 16:14:08.514 SvUSService [main] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2021-01-25 16:14:08.555 SvUSService [main] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3a720ae3] was not registered for synchronization because synchronization is not active
2021-01-25 16:14:27.852 SvUSService [main] ERROR com.zaxxer.hikari.pool.HikariPool - masterpool - Exception during pool initialization.
net.ucanaccess.jdbc.FeatureNotSupportedException: Feature not supported.
	at net.ucanaccess.jdbc.UcanaccessConnection.setCatalog(UcanaccessConnection.java:704)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:428)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:374)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:169)
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
	at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82)
	at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68)
	at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:338)
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84)
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
	at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:143)
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
	at com.sun.proxy.$Proxy285.query(Unknown Source)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
	at com.sun.proxy.$Proxy89.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
	at com.sun.proxy.$Proxy238.selectByExample(Unknown Source)
	at org.skyviewpacs.service.service.impl.ArchiveConfigImpl.getAllArchiveMappingsForCache(ArchiveConfigImpl.java:149)
	at org.skyviewpacs.service.service.impl.ArchiveConfigImpl$$FastClassBySpringCGLIB$$fc9cecd9.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
	at org.skyviewpacs.service.service.impl.ArchiveConfigImpl$$EnhancerBySpringCGLIB$$8f57ad20.getAllArchiveMappingsForCache(<generated>)
	at org.skyviewpacs.service.task.CommonConfigCacheLoadTask.putLogicalFieldInCache(CommonConfigCacheLoadTask.java:81)
	at org.skyviewpacs.service.task.CommonConfigCacheLoadTask.run(CommonConfigCacheLoadTask.java:126)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:794)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
	at org.skyviewpacs.us.SkyViewUsService.main(SkyViewUsService.java:23)

数据源如下:

package org.skyviewpacs.model.datasource;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import com.zaxxer.hikari.HikariDataSource;

@Configuration
@MapperScan(basePackages = {
    
    
		"org.skyviewpacs.model.dao.master1" }, sqlSessionFactoryRef = "masterSqlSessionFactory1", sqlSessionTemplateRef = "sqlSessionTemplateMaster1")
public class SqlSessionFactoryMaster1 {
    
    

	@Bean(name = "masterdb1")
	@ConfigurationProperties(prefix = "spring.datasource.master1")
	public HikariDataSource masterdb() {
    
    
		return DataSourceBuilder.create().type(HikariDataSource.class).build();
	}
	
	
	@Primary
	@Bean(name = "dynamicDataSource2")
	public DataSource dynamicDataSource() {
    
    
		SkyviewDynamicDataSource dynamicDataSource = new SkyviewDynamicDataSource();
		// 默认数据源
		dynamicDataSource.setDefaultTargetDataSource(masterdb());
		// 配置多数据源
		Map<Object, Object> dsMap = new HashMap<Object, Object>();
		dsMap.put(SkyviewDBS.DB_MASTER1, masterdb());
		dynamicDataSource.setTargetDataSources(dsMap);
		return dynamicDataSource;
	}

	@Bean
	public SqlSessionFactory masterSqlSessionFactory1(@Qualifier("dynamicDataSource2") DataSource dynamicDataSource)
			throws Exception {
    
    
		SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
		factoryBean.setDataSource(dynamicDataSource);
		factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
				.getResources("classpath:org/skyviewpacs/model/dao/master1/*.xml"));
		factoryBean.setConfigLocation(
				new DefaultResourceLoader().getResource("classpath:mybatis-config.xml"));
		return factoryBean.getObject();
	}

	@Bean(name = "masterTransactionManager1")
	public DataSourceTransactionManager basecloudTransactionManager1() {
    
    
		return new DataSourceTransactionManager(dynamicDataSource());
	}

	@Bean
	public SqlSessionTemplate sqlSessionTemplateMaster1() throws Exception {
    
    
		SqlSessionTemplate template = new SqlSessionTemplate(masterSqlSessionFactory1(dynamicDataSource())); // 使用上面配置的Factory
		return template;
	}
}

数据库配置如下:

spring.datasource.master.jdbcUrl= jdbc:sqlserver://192.168.50.141:1433;DatamasterName=masterdb_us2
spring.datasource.master.username = sa
spring.datasource.master.password = pacs
spring.datasource.master.catalog=masterdb_us2
spring.datasource.master.schema=dbo
spring.datasource.master.connectionTimeout=30000
spring.datasource.master.maxLifetime=900000
spring.datasource.master.maximumPoolSize=50
spring.datasource.master.poolName=masterpool

数据源为spring.datasource.master1
数据库配置为spring.datasource.master
只需要把数据库配置改成spring.datasource.master1即可

猜你喜欢

转载自blog.csdn.net/weixin_44215804/article/details/113119764