JDBC URL with ignorecase 不适用于 H2 数据库连接
JDBC URL with ignorecase is not working for H2 database connection
我试图在 SQL 模式下使用 h2 数据库。我能够创建一个模式,全部大写,并在其下创建一些表。但是,我在休眠上的应用程序 运行 似乎无法正常工作,除非我在所有大写字母中匹配架构名称。我认为可以在 JDBC 连接字符串中使用 IGNROECASE=TRUE 配置 h2。我错过了什么吗?
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
代替;但不要在较新的版本中使用此设置。
我试图在 SQL 模式下使用 h2 数据库。我能够创建一个模式,全部大写,并在其下创建一些表。但是,我在休眠上的应用程序 运行 似乎无法正常工作,除非我在所有大写字母中匹配架构名称。我认为可以在 JDBC 连接字符串中使用 IGNROECASE=TRUE 配置 h2。我错过了什么吗?
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
代替;但不要在较新的版本中使用此设置。