h2 - 在 H2 表名中使用大括号
问题描述
我的应用程序使用MySQL
数据库,它有表utils.'{UserUtils}'
。我需要编写一个使用相同查询但使用H2
数据库进行测试的测试。但我无法在中创建这样的表H2
,我有错误:
Syntax error in SQL statement
"create table utils.`{UserUtils}`[*]" [42000-196]
是否有可能以某种方式告诉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。
推荐阅读
- bash - 考虑Linux中列的值将矩阵拆分为块
- javascript - LocalStorage 变量不断在两个值之间自行切换,而且没有任何原因——这是 Chrome 的错误吗?
- regex - 正则表达式:匹配两个字符之间的所有内容,除非还被不同的字符包围
- java - 如何使用 Mockito 在 Java 中通过示例模拟 ExampleMatchers
- reactjs - CORS 问题 React Axios
- haskell - 如何在字符串haskell中实现占位符
- python - 表单未在 django 中显示
- javascript - SetInterval 在 Kindle 和 Kobo 浏览器中不起作用
- ruby-on-rails - 如何在graphql ruby中获取连接类型的字段参数
- c - 如何将新设备添加到板初始化代码 linux 内核