我想在我的应用程序上使用h2数据库和脚本但无法连接它

时间:2017-09-30 14:28:24

标签: database spring-boot

我设置了依赖项和app.properties

pring.h2.console.enabled=true
spring.h2.console.path=/h2
#Spring data JPA properties
spring.datasource.url=jdbc:h2:mem:testdb:MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql=true
spring.jpa.hibernate.format_sql=true

hibernate.dialect=org.hibernate.dialect.H2Dialect

spring.thymeleaf.cache = false

在我的资源目录中我有两个文件table-script.sql用于创建表 和data-scripts.sql转储插入语句,但我该怎么做才能让我的控制台上运行这个数据库,帮助大家谢谢,这是春季启动我没需要的其他配置文件或数据源bean

1 个答案:

答案 0 :(得分:0)



@Profile("test")
    @Configuration
    @PropertySource(value = {"classpath:test.properties"})
    static class ConfigTest {


        @Autowired
        private Environment env;

        @Bean(name = "dataSource")
        public DataSource dataSourceTest() {
            return new EmbeddedDatabaseBuilder()
                    .generateUniqueName(true)
                    .setType(EmbeddedDatabaseType.H2)
                    .setScriptEncoding("UTF-8")
                    .addScripts("schema.sql", "data.sql")
                    .build();
        }

        @Bean
        public JpaVendorAdapter jpaVendorAdapterTest() {
            HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
            adapter.setShowSql(false);
            adapter.setDatabase(Database.H2);
            adapter.setDatabasePlatform("org.hibernate.dialect.H2Dialect");
            adapter.setGenerateDdl(true);
            return adapter;
        }
    }




这是我配置我的方式,因为Inmemory数据库名称是自动生成的,我也无法提供属性文件。我不得不让Java和Spring自己做这件事

  

表script.sql



CREATE TABLE IF NOT EXISTS table1 (
  id          INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name        VARCHAR(255)                   NOT NULL,
  field_1    TEXT,
  field_2    TEXT,
  field_3    INT                            NOT NULL
);

CREATE TABLE IF NOT EXISTS table2 (
      id          INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name        VARCHAR(255)                   NOT NULL,
  field_1    TEXT,
  field_2    TEXT,
  field_3    INT                            NOT NULL
);




  

以下是示例文件夹结构



src
|--- main
    |--- java
        |--- com.project.root # classpath: <- genarally pointing here
            |--- confing
                |--- AppConfig.java #Above file
    |--- resources
         |--- table-script.sql
&#13;
&#13;
&#13;

这就是它的一切。休息由Spring处理。它在创建随机数据库时运行该文件。