【问题标题】:Set H2 schema on connection在连接上设置 H2 架构
【发布时间】:2015-05-26 22:55:05
【问题描述】:

我正在为我们的 oracle 生产数据库配置一个 h2 测试数据库。所有表的模式都是xxx。我的数据源定义如下:

public DataSource dataSource() {
    JdbcDataSource ds = new JdbcDataSource();
    ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx;SCHEMA=xxx");
    ds.setUser("xxx");
    ds.setPassword("xxx");
    return ds;
}

使用SCHEMA=xxx,我得到一个错误:Caused by: org.h2.jdbc.JdbcSQLException: Schema "xxx" not found; SQL statement: SET SCHEMA xxx [90079-186]

如果没有SCHEMA=xxx,每当 Hibernate 尝试运行带有连接的查询时,我都会收到错误,因为它不会将架构添加到表名之前。不过,它在生产环境中使用我们的 oracle 数据库执行此操作。

编辑: 为了提供更多的见解,我从创建脚本中填充我的数据库,这些脚本也用于生产:

@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSource);
    initializer.setDatabasePopulator(databasePopulator());
    return initializer;
}

private DatabasePopulator databasePopulator() {
    final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
    populator.setSeparator(";");
    populator.setCommentPrefix("--");
    populator.addScript(new ClassPathResource("db-schema.sql"));
    populator.addScript(new ClassPathResource("db-init-data.sql"));
    return populator;
}

【问题讨论】:

  • 您是否确认架构存在?可能区分大小写?
  • 它存在是因为它是用INIT=CREATE SCHEMA IF NOT EXISTS xxx创建的。除了导致连接的查询之外,其他一切都按预期工作。
  • 对不起,我没注意到

标签: java oracle hibernate h2


【解决方案1】:

此连接字符串有效:ds.setUrl("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2;INIT=CREATE SCHEMA IF NOT EXISTS xxx\\;SET SCHEMA xxx");

【讨论】:

    【解决方案2】:

    我建议你应该使用hibernate.hbl2ddl.auto=create 来创建连接方案。

    这里有一些信息 Hibernate hbm2ddl.auto possible values and what they do?

    【讨论】:

    • 我的 DDL 脚本具有正确的架构,并且该表是在该架构下创建的。唯一的问题是连接正在寻找一个名为 ROLE_PERMISSION 而不是 xxx.ROLE_PERMISSION 的表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2014-06-12
    • 2023-03-08
    • 2011-03-17
    • 2014-05-22
    • 2012-08-18
    • 1970-01-01
    相关资源
    最近更新 更多