设置 H2 数据库时出错
Posted
技术标签:
【中文标题】设置 H2 数据库时出错【英文标题】:Error When Setting up H2 Database 【发布时间】:2018-02-23 19:39:01 【问题描述】:我在启动应用程序时遇到此错误,该应用程序在启动时会从表中读取一些数据:
org.h2.jdbc.JdbcSQLException: Unknown data type: "ENUM"; SQL statement:
CREATE CACHED TABLE PUBLIC.POWERPLANT(
POWERPLANTID INT NOT NULL,
ORGNAME VARCHAR(25) NOT NULL,
ISACTIVE BOOL NOT NULL,
MINPOWER INT NOT NULL,
MAXPOWER INT NOT NULL,
RAMPRATE INT,
RAMPRATESECS INT,
POWERPLANTTYPE ENUM('OnOffType','RampUpType'),
CREATEDAT TIMESTAMP NOT NULL,
UPDATEDAT TIMESTAMP NOT NULL
) [50004-186]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.command.Parser.parseColumnWithType(Parser.java:3990)
at org.h2.command.Parser.parseColumnForTable(Parser.java:3853)
at org.h2.command.Parser.parseCreateTable(Parser.java:5761)
at org.h2.command.Parser.parseCreate(Parser.java:4149)
at org.h2.command.Parser.parsePrepared(Parser.java:350)
at org.h2.command.Parser.parse(Parser.java:305)
at org.h2.command.Parser.parse(Parser.java:277)
这是我的连接字符串:
db.url = "jdbc:h2:~/path/to/db/file;MODE=mysql;INIT=CREATE DOMAIN IF NOT EXISTS enum as VARCHAR(255);IFEXISTS=TRUE"
你知道如何解决这个问题吗?
【问题讨论】:
【参考方案1】:我通过将 h2 Maven 库版本更新为 1.4.200 而不是 1.4 解决了同样的问题。 187
【讨论】:
【参考方案2】:这是我解决它的方法。 Enum类型应该这样写!
powerPlantType VARCHAR(25) check (powerPlantType in ('OnOffType', 'RampUpType')),
【讨论】:
以上是关于设置 H2 数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章