在H2表名称中使用大括号

时间:2018-07-13 20:32:48

标签: h2

我的应用程序使用MySQL数据库,并且具有表utils.'{UserUtils}'。我需要编写一个使用相同查询的测试,但使用H2数据库进行测试。但是我无法在H2中创建这样的表,但出现错误:

Syntax error in SQL statement 
  "create table utils.`{UserUtils}`[*]" [42000-196]

是否可以通过某种方式告诉H2创建这样的表,或者名称是否受到严格限制?

1 个答案:

答案 0 :(得分:3)

在MySQL中,您需要使用反引号(`)将标识符括在特殊字符中。但是,在H2中,使用带有特殊字符的标识符的正确方法是将它们括在双引号(“)中。我刚刚在H2 v1.4中尝试了一下,没有任何麻烦:

create table "{UserUtils}" (
  id int
);

insert into "{UserUtils}" (id) values (123);
insert into "{UserUtils}" (id) values (456);

select * from "{UserUtils}";

返回:

ID           
-------------
123          
456          

也许您使用的是H2的旧/新版本。