【问题标题】:H2 db Inserting data with quotes throw exceptionH2 db插入带引号的数据抛出异常
【发布时间】: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 中做到这一点

【问题讨论】:

    标签: mysql h2


    【解决方案1】:

    我通过加倍单引号使其工作。

    例如: 插入 dummyTable 值 (6,'ad''s', 'def')

    这篇帖子Inserting a long text in H2 Database from an SQL script 有帮助

    【讨论】:

    • 如果您从数据库导出并且输入是用`定义的(例如:data),则会出现问题。这个也应该替换为 '
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多