首页 > 解决方案 > 在 H2 表名中使用大括号

问题描述

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

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

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

标签: h2

解决方案


在 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。


推荐阅读