H2 table 列在双引号中不区分大小写
H2 table columns doesn't respect case when double-quoted
我正在开发一种工具,可以将数据导入到即时生成的模式中。因此,我几乎无法控制 table 或列名的外观。我最近 运行 遇到了在 table 中创建 2 列的问题,它们具有相同的名称但大小写不同。这个问题可以用这个最简单的 DDL 操作来证明:
CREATE TABLE "a" (
"c1" integer,
"C1" integer
)
这对我来说在程序和 h2 控制台中都失败了:
Duplicate column name "C1"; SQL statement: create table "a" ( "c1"
integer, "C1" integer )
例如,这在 PostgreSQL 中工作正常,我认为它应该工作,因为 SQL 规范要求在值用双引号引起来时区分大小写。
我目前正在使用内存中的 h2 数据库。
编辑: 运行原因是连接是使用选项 DATABASE_TO_UPPER=false
建立的,这导致了此行为
在 H2 中,名称不区分大小写。
...但是...
引用的名称区分大小写,并且可以包含空格。
我只是在 H2 的本地实例中 运行 这个确切的例子,它运行良好。
create table p ("c1" integer, "C1" integer);
insert into p values (1,2);
select * from p;
我认为您的 SQL 在 H2 中 运行 之前被更改。在 SQL 为 运行.
之前,所有内容都可能被大写
根据您的更新,连接是使用 DATABASE_TO_UPPER=false 选项建立的,这导致了此行为
我正在开发一种工具,可以将数据导入到即时生成的模式中。因此,我几乎无法控制 table 或列名的外观。我最近 运行 遇到了在 table 中创建 2 列的问题,它们具有相同的名称但大小写不同。这个问题可以用这个最简单的 DDL 操作来证明:
CREATE TABLE "a" (
"c1" integer,
"C1" integer
)
这对我来说在程序和 h2 控制台中都失败了:
Duplicate column name "C1"; SQL statement: create table "a" ( "c1" integer, "C1" integer )
例如,这在 PostgreSQL 中工作正常,我认为它应该工作,因为 SQL 规范要求在值用双引号引起来时区分大小写。
我目前正在使用内存中的 h2 数据库。
编辑: 运行原因是连接是使用选项 DATABASE_TO_UPPER=false
建立的,这导致了此行为
在 H2 中,名称不区分大小写。
...但是...
引用的名称区分大小写,并且可以包含空格。
我只是在 H2 的本地实例中 运行 这个确切的例子,它运行良好。
create table p ("c1" integer, "C1" integer);
insert into p values (1,2);
select * from p;
我认为您的 SQL 在 H2 中 运行 之前被更改。在 SQL 为 运行.
之前,所有内容都可能被大写根据您的更新,连接是使用 DATABASE_TO_UPPER=false 选项建立的,这导致了此行为