嵌入式H2 DB在外部SQL客户端中显示为空

时间:2018-04-12 20:27:58

标签: spring-boot h2

我有一个Spring应用程序。
使用嵌入式H2数据库。

我通过控制台启用了对H2的访问 并尝试通过外部SQL客户端启用访问。

通过控制台访问数据库 - 有效。数据库不为空

enter image description here enter image description here

但是当我尝试使用外部SQL客户端访问数据库时 - 数据库显示为空:

enter image description here

问题:如何通过外部SQL客户端访问数据库?

我的application.properties

# http://localhost:8080/console/
h2.tcp.enabled=false
spring.datasource.url=jdbc:h2:mem:dbname
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=mydbuser
spring.datasource.password=mydbpass
spring.jpa.hibernate.ddl-auto=create

我的Application.class

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
 ...

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }


  /**
   * Start internal H2 server so we can query the DB from IDE
   *
   * @return H2 Server instance
   * @throws SQLException
   */
  @Bean(initMethod = "start", destroyMethod = "stop")
  public Server h2Server() throws SQLException {
    return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
  }

}

我的网络配置

@Configuration
public class WebConfiguration {
    @Bean
    ServletRegistrationBean h2servletRegistration(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean( new WebServlet());
        registrationBean.addUrlMappings("/console/*");

        // make the console remotely accessible
        registrationBean.addInitParameter("webAllowOthers", "true");

        return registrationBean;
    }
}

1 个答案:

答案 0 :(得分:0)

发现它是什么 - 我在我的应用程序和外部SQL客户端中使用了不同版本的H2。上面的H2相关配置是正确的。