H2 db插入带引号的数据抛出异常
Posted
技术标签:
【中文标题】H2 db插入带引号的数据抛出异常【英文标题】:H2 db Inserting data with quotes throw exception 【发布时间】: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 中做到这一点
【问题讨论】:
【参考方案1】:我通过加倍单引号使其工作。
例如: 插入 dummyTable 值 (6,'ad''s', 'def')
这篇帖子Inserting a long text in H2 Database from an SQL script 有帮助
【讨论】:
如果您从数据库导出并且输入是用`定义的(例如:data
),则会出现问题。这个也应该替换为 '以上是关于H2 db插入带引号的数据抛出异常的主要内容,如果未能解决你的问题,请参考以下文章