带有忽略大小写的 JDBC URL 不适用于 H2 数据库连接

Tom*_*Tom 3 java hibernate h2

我试图在 SQL 模式下使用 h2 数据库。我能够创建一个全部大写的模式,并在其下创建一些表。但是,除非我匹配所有大写的架构名称,否则我在休眠上运行的应用程序似乎无法工作。我认为 h2 可以在 JDBC 连接字符串中使用 IGNROECASE=TRUE 进行配置。我错过了什么吗?

Evg*_*nov 7

IGNORECASE设置与数据库对象的名称无关,它CHARACTER VARYING以奇怪的方式将列的排序规则更改为不区分大小写。

根据 SQL 标准的要求,默认设置的 H2 和许多其他 DBMS 中不带引号的标识符将转换为大写。

如果您使用 MySQL 或 PostgreSQL 兼容模式,通常需要指定DATABASE_TO_LOWER=TRUE,因为这些 DBMS 会将不带引号的标识符转换为小写。您可以在那里找到有关这些兼容性模式的更多详细信息: https ://h2database.com/html/features.html#compatibility

在某些情况下您可能还需要CASE_INSENSITIVE_IDENTIFIERS=TRUE

这两个设置自 H2 1.4.198 起可用。在旧版本中,您可以使用DATABASE_TO_UPPER=FALSE;但不要在较新的版本中使用此设置。