You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

H2 Database无法从schema.sql创建表的问题排查

问题排查与解决方案

一、H2控制台看不到contact_msg表的原因及解决

1. 确认数据库连接参数一致性

检查application.properties中的JDBC URL是否与H2控制台连接时使用的URL完全一致:

  • 比如配置文件中是spring.datasource.url=jdbc:h2:mem:eazybitesdb,那控制台连接时必须填相同的URL,否则会连接到另一个内存数据库,自然看不到表。
  • 同时确认用户名(spring.datasource.username)、密码(spring.datasource.password)与控制台输入的一致。

2. 确保schema.sql被Spring Boot执行

  • 确认schema.sql放在src/main/resources目录下(这是Spring Boot默认加载初始化脚本的位置)。
  • 检查脚本语法:比如CREATE TABLE contact_msg语句是否有语法错误,比如字段类型、括号是否匹配,没有拼写错误。
  • 若使用Spring Boot 2.5+版本,需添加配置:spring.sql.init.mode=always,强制执行初始化脚本(默认仅在嵌入式数据库无预初始化数据时才执行)。

3. 切换到正确的Schema

连接H2控制台后,左侧导航栏选择对应的Schema(比如默认的PUBLIC,如果脚本中指定了自定义Schema则选对应名称),才能看到该Schema下创建的表。

二、Spring Security配置无效的原因及解决

1. 确认依赖正确引入

检查pom.xml中是否包含Spring Security依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

确保依赖版本与Spring Boot版本匹配。

2. 修正Security配置类

H2控制台依赖Frame和特定路径访问,需在配置中放行并关闭对应限制:

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 放行H2控制台所有路径
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/h2-console/**").permitAll()
                .anyRequest().authenticated()
            )
            // 忽略H2控制台的CSRF校验
            .csrf(csrf -> csrf.ignoringRequestMatchers("/h2-console/**"))
            // 允许H2控制台的Frame嵌套
            .headers(headers -> headers.frameOptions(frame -> frame.sameOrigin()));
        
        return http.build();
    }
}
  • 注意:如果是Spring Boot 2.7以前版本,配置方式略有不同,需使用http.csrf().ignoringAntMatchers("/h2-console/**")和http.headers().frameOptions().sameOrigin()。

3. 排查配置冲突

  • 检查是否存在多个@Configuration标注的Security配置类,导致配置被覆盖。
  • 检查application.properties中是否有Security相关属性(比如spring.security.user.name等)与配置类逻辑冲突。

内容的提问来源于stack exchange,提问作者Mario Mateaș

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:50:38