【发布时间】:2022-01-11 23:23:42
【问题描述】:
我刚刚更新了我的 com.h2database 版本 1.4.200 -> 2.0.202。 在以前的版本中,我可以执行如下语句:
private static final String CREATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS %s (" +
"name varchar(255) NOT NULL," +
"value varchar(255) NOT NULL," +
"PRIMARY KEY (name)" +
") ENGINE=InnoDB";
但最新版本抱怨:
org.h2.jdbc.JdbcSQLSyntaxErrorException: SQL 语句中的语法错误
如果我这样运行它。
要修复语法错误,我必须将所有字段名称包装到背包中,如下所示:
private static final String CREATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS %s (" +
"`name` varchar(255) NOT NULL," +
"`value` varchar(255) NOT NULL," +
"PRIMARY KEY (`name`)" +
") ENGINE=InnoDB";
我将 h2 用于 mySQL 模式。我的 JDBC 连接字符串如下所示:
"jdbc:h2:mem:database;TRACE_LEVEL_FILE=0;TRACE_LEVEL_SYSTEM_OUT=0;DATABASE_TO_UPPER=false;MODE=MySQL";
是否可以避免在针对 h2 的每个查询中使用 ``(反引号)符号?并让查询在没有它们的情况下编译?
【问题讨论】: