春季启动和h2。无法更改数据库名称

时间:2017-09-20 15:19:41

标签: java spring spring-boot jdbc h2

我有这样的配置文件:

spring.datasource:
    driverClassName: org.h2.Driver
    url: jdbc:h2:mem:mydb;MODE=MySQL

server:
  port: 9001

我的主要

@SpringBootApplication
public class SpringJmsApplication implements CommandLineRunner {

   public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringJmsApplication.class, args);

    }

    @Resource
    DataSource dataSource;
    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public void run(String... strings) throws Exception {

        log.info("Creating tables" + jdbcTemplate.toString());
        log.info("<<<<<<<<<<<<<<<<<<<<<<<<" + dataSource.getConnection().getCatalog()+">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");

        jdbcTemplate.execute("DROP TABLE customers IF EXISTS");
        jdbcTemplate.execute("CREATE TABLE xxx(" +
                "id SERIAL, first_name VARCHAR(255), last_name VARCHAR(255))");
}
}

在我的控制台http://localhost:9001/console/中,我使用url参数jdbc:h2:mem:mydb进入我的数据库,找不到我的表,但是使用参数jdbc:h2:mem:testdb我看到了我的xxx表。如何解决这个问题?

dataSource.getConnection().getCatalog()

始终返回“TESTDB”

2 个答案:

答案 0 :(得分:0)

您必须在spring-boot-starter-jdbc文件中提供build.gradle依赖项。

替换:

compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.11.RELEASE

使用:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc'

可能spring-boot-starter-jdbc处理此属性处理。

答案 1 :(得分:0)

将此添加到您的applicaton.properties

spring.datasource.url=jdbc:h2:mem:testdb