当前位置: 首页 > 面试题库 >

H2 SQL语法异常

邵星河
2023-03-14
问题内容

我正在尝试为H2导入一个SQL脚本。该脚本由spring-
batch提供,用于存储作业元数据。当我直接在H2控制台中执行此脚本时,没有语法错误,但是我在初始化阶段引用了Hibernate /
JPA中要导入的相同脚本,却遇到了以下异常:

 org.hibernate.tool.hbm2ddl.ImportScriptException: Error during statement execution (file: 'org/springframework/batch/core/schema-h2.sql'): CREATE TABLE BATCH_JOB_INSTANCE  (
   ....    
    Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE BATCH_JOB_INSTANCE  ("; expected "identifier"; SQL statement:
CREATE TABLE BATCH_JOB_INSTANCE  ( [42001-171]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2-1.3.171.jar:1.3.171]
    at org.h2.message.DbException.get(DbException.java:169) ~[h2-1.3.171.jar:1.3.171]
    at org.h2.message.DbException.getSyntaxError(DbException.java:194) ~[h2-1.3.171.jar:1.3.171]

这是我要执行的脚本:https :
//code.google.com/p/joshlong-
examples/source/browse/trunk/batch/src/main/resources/sql/schema-h2.sql?r=
2

我正在使用hbm2ddl导入sql文件:

jpaProperties.setProperty("hibernate.connection.driver_class", "org.h2.Driver");
    jpaProperties.setProperty("hibernate.dialect", H2Dialect.class.getName());
    jpaProperties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
    jpaProperties.setProperty("hibernate.hbm2ddl.import_files",
        "org/springframework/batch/core/schema-drop-h2.sql,org/springframework/batch/core/schema-h2.sql");

知道如何解决这个问题吗?


问题答案:

尝试将所有create语句写在一行中。

import.sql中的语句定界符是换行符。如果要更改它,则需要使用Hibernate>
4.1。您可以在其中实施MultipleLinesSqlCommandExtractor并通过指定hibernate.hbm2ddl.import_files_sql_extractor

  • @请参阅http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch03.html
  • @ 请参阅https://hibernate.atlassian.net/browse/HHH-2403


 类似资料:
  • 我正打破我的头试图找出这里出了什么问题。我正在研究一个模式:它有一个故事实体(表:故事),我试图向这个stories.portofoliotype添加一个列_id它是PortfolioType的外键(表:portofolitype)。我想我有正确的注释,我甚至记录了MySQL查询,它得到了以下查询,这是正确的。我试图创建一个新的故事: 但hibernate失败,出现上述异常。代码如下: 故事JAV

  • 问题内容: 我正在尝试按字符分割字符串。但是我得到一个错误: 我不尝试使用正则表达式或任何东西。我尝试使用,它也行不通。 问题答案: 嗯…原因是将其参数字符串视为正则表达式。 现在,两者和在正则表达式中都是特殊字符。 因此,您必须跳过regex world的特殊字符以进行争论,像这样,

  • 问题内容: 我发现了“不寻常”的通用语法,例如: 显然,这些方法的结果是通用的。这样的语法用于类型检查吗?一个阵列不能为一个参数。 问题答案: 是用于显式指定泛型方法的类型参数的语法 使用泛型类时,通常必须指定type参数(例如): 使用泛型方法时,通常不会传递类型参数: 您会注意到,没有代码在哪里明确指定我们想要的版本,即没有像使用通用类()时那样指定明确的类型实参。 编译器正在做一些编译器魔术

  • 我正在使用SQLiteHelper创建一个数据库,当应用程序尝试运行时,我不断收到异常。 这是我收到的错误消息:引起原因:android.database.sqlite.SQLiteExcture:附近"Trip":语法错误(代码1):,而编译:创建表商务旅行支出(desc文本主键,餐整数不为空,饮料整数不为空,旅行整数不为空,住宿整数不为空,其他整数不为空,Receipt_Retained?Re

  • 我不明白为什么executeQuery方法会抛出异常,我尝试在mysql上运行语句,结果正常。 这是代码: 以下是跟踪:

  • 问题内容: 我可以使用关键字将javascript函数标记为“异步”(即返回承诺)。像这样: 箭头功能的等效语法是什么? 问题答案: 异步 箭头函数 如下所示: 传递给它的 单个参数的 异步 箭头函数 如下所示: __ 该 匿名 形式的作品,以及: 异步函数 声明 如下所示: 在 回调中 使用异步函数: