首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放框架2:内存数据库中的h2 mysql兼容模式:转义字符

播放框架2:内存数据库中的h2 mysql兼容模式:转义字符
EN

Stack Overflow用户
提问于 2012-09-10 11:17:59
回答 1查看 3.7K关注 0票数 2

我在开发模式下使用内存数据库中的H2,但我希望它的行为尽可能像mysql数据库(参见http://www.h2database.com/html/features.html#compatibility)。

这是我在application.conf文件中的配置:

代码语言:javascript
复制
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play;MODE=MYSQL;DB_CLOSE_DELAY=-1"

要测试它,我只需运行"play“,然后在play的控制台上发出"h2-browser”命令,然后在url jdbc字段中输入"jdbc:h2:mem:play;MODE=MYSQL;DB_CLOSE_DELAY=-1“

以下语句在mysql中运行正常:

代码语言:javascript
复制
CREATE TABLE `tmp` (
  `name` varchar(50) NOT NULL
);
insert into tmp (name) values ('slash: \\, simple quotes \', double quotes \" -');
select * from tmp;

但在h2控制台中,我得到了一个错误,我唯一可以转义的字符是单引号,只需在它前面加上另一个单引号。(还尝试输入'SET MODE MySQL;')

有什么方法可以让h2在play的框架h2-browser中表现得像mysql吗?或者这只是h2的一个限制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-10 13:00:05

您提供的链接http://www.h2database.com/html/features.html#compatibility记录了H2支持的确切兼容性功能。未记录的内容不受支持。在这种情况下,问题似乎是字符串文字中的“反斜杠”转义:

代码语言:javascript
复制
'slash: \\, simple quotes \', double quotes \" -'

对于ANSI SQL,反斜杠不是转义字符;要转义单引号,需要使用两个单引号。问题是这可能不适用于MySQL,因为单个反斜杠仍然是转义字符:

代码语言:javascript
复制
'slash: \, simple quotes '', double quotes " -'

对于这个问题,一个解决方案是使用ANSI mode for MySQL,另一个解决方案是始终对字符串文字使用绑定变量(JDBC中的PreparedStatement)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12344978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档