【发布时间】:2019-08-01 08:42:09
【问题描述】:
我正在尝试用内存 h2 数据库(mysql 模式)替换我的普通 msqldb 以进行单元测试。请看表格说明
'CREATE TABLE `dummyTable` (
`id` int(11) NOT NULL,
`value1` longtext,
`value2` longtext,
PRIMARY KEY (`id`),
) ENGI
NE=InnoDB DEFAULT CHARSET=utf8'
然后我尝试插入带有 ‘ 的 longtext 字段。在 mysql 中,我使用 \ 对其进行了转义,并且插入语句运行良好,但在 h2 db 中它会引发以下异常。
插入 dummyTable 值(6,'ad\'s', 'def')
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "insert into dummyTable values (6,'ad's','df[*]')"; SQL statement:
insert into dummyTable values (6,'ad's','df') [42000-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:451)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.message.DbException.getSyntaxError(DbException.java:229)
at org.h2.command.Parser.getSyntaxError(Parser.java:989)
at org.h2.command.Parser.checkRunOver(Parser.java:5129)
我尝试了另一个插入语句
插入 dummyTable 值(6,"ad\'s","df")
但它也因以下异常而失败
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ad's" not found; SQL statement:
insert into dummyTable values (6,"ad's","df") [42122-199]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:451
)
有人可以请教如何在 h2 db 中做到这一点
【问题讨论】: