我正在开发一个工具,它将数据导入到动态生成的模式中。因此,我几乎无法控制表或列名称的外观。我最近遇到了在表中创建两列名称相同但大小写不同的问题。这个问题可以通过这个最简单的 DDL 操作来演示:
CREATE TABLE "a" (
"c1" integer,
"C1" integer
)
这对我来说在程序和 h2 控制台中都失败了:
重复的列名称“C1”; SQL语句:创建表“a”(“c1”
整数,“C1”整数)
例如,这在 PostgreSQL 中工作得很好,我认为它应该工作,因为 SQL 规范在值用双引号引起来时要求区分大小写。
我目前正在使用内存 h2 数据库。
EDIT:它耗尽的原因是连接是通过选项建立的DATABASE_TO_UPPER=false
导致了这种行为
在 H2 中,名称不区分大小写。
H2 docs http://www.h2database.com/html/grammar.html#name
...但...
带引号的名称区分大小写,并且可以包含空格。
引用名称的 H2 文档 http://www.h2database.com/html/grammar.html#quoted_name
我刚刚在 H2 的本地实例中运行了这个确切的示例,并且运行良好。
create table p ("c1" integer, "C1" integer);
insert into p values (1,2);
select * from p;
我认为你的 SQL 在 H2 中运行之前已经被更改了。在 SQL 运行之前,所有内容都可能已被大写。
根据您的更新,连接是使用选项 DATABASE_TO_UPPER=false 建立的,这导致了此行为
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)