【问题标题】:Table creation error using Hibernate and H2使用 Hibernate 和 H2 的表创建错误
【发布时间】:2021-01-28 18:47:49
【问题描述】:

我正在尝试运行使用 H2 内存数据库和休眠的测试。 但是在上下文启动期间出现以下错误:

原因:org.h2.jdbc.JdbcSQLSyntaxErrorException: 语法错误 SQL 语句“CREATE TABLE ANIMAL (ID BIGINT NOT NULL, CREATIONDATE 日期时间,创建者 VARCHAR(255),最后修改日期时间, LASTMODIFIEDBY VARCHAR(255),版本 BIGINT,过敏 VARCHAR(255), 病历 VARCHAR(255)、品种 VARCHAR(255)、注释 VARCHAR(255)、 DATEOBFIRTH 日期时间,已故位不为空,饮食 VARCHAR(255), HUSBANDRY VARCHAR(255)、IDCODE VARCHAR(255)、NAME VARCHAR(255)、SEX INTEGER、WEIGHT FLOAT、FK_OWNER BIGINT、TAXONOMY_ID BIGINT、PRIMARY KEY (ID)) ENGINE=[*]MYISAM";预期为“标识符”;

我做错了什么? 这是 application.properties 文件:

jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1

hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.hbm2ddl.auto=create

hibernate 尝试创建的所有数据库都重复同样的错误:

org.h2.jdbc.JdbcSQLSyntaxErrorException: SQL 语句中的语法错误 “创建表休眠序列(NEXT_VAL BIGINT)引擎=[*]MYISAM”; 预期的“标识符”

【问题讨论】:

  • 在创建脚本中,您是否将每条指令放在一行中?
  • 是的,脚本其实是Hibernate生成的
  • 添加Animal实体类。

标签: java sql hibernate jpa h2


【解决方案1】:

所以最后的问题是在配置文件中我有错误的行:

Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");

    return properties;
}

改成:

properties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
properties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));

一切都开始正常了

【讨论】:

  • 你在使用Spring吗?
  • 谢谢!方言也是我的问题
猜你喜欢
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 2019-06-12
  • 2021-10-29
  • 1970-01-01
  • 2018-11-08
  • 2013-07-18
相关资源
最近更新 更多