`
ztianlong
  • 浏览: 66680 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

错误:org.hibernate.exception.SQLGrammarException: could not execute

阅读更多

于Hibernate的应用程序的开发过程中,通过Hibernate操作数据库时,在程序执行过程中出现了SQL Grammer Exception,Could not execute JDBC batch update的提示信息。遇到此类问题确实让人感觉摸不着头脑(尤其是第一次遇到),不过解决此类问题并不需要大动干戈地大规模修改代码,也不需要做更改数据库连接方式这样动用牛刀的事。问题的来源还在于细节上出了问题。

 
此类问题的出现主要来自三个方面。
1、  SQL语句中存在语法错误或是传入的数据有误;
2、  数据库的配置不合法,或者说是配置有误。较容易出现的有数据表的映射文件(,hbm.xml文件)配置有误;Hibernate.cfg.xml文件配置有误;
3、  当前的数据库用户权限不足,不能操作数据库。以是以Oracle 数据库为例,这种情况下在错误提示中会显示java.sql.BatchUpdateException: ORA-01031: insufficient privileges这样的信息。
 
以下是我在项目中解决SQL Grammer Exception,Could not execute JDBC batch update异常时使用的方法。
 
首先,根据错误提示信息查看数据表的映射文件是否配置正确,映射的列名、属性是否正确;
 
其次,如果提示信息中存在insufficient privileges这样的信息则查看当前使用的数据库用户是否有对当前操作的数据库、数据表具有操作权。在解决这个问题是,我也在网上找了这类问题的很多资料,造成此类问题的发生绝大多数情况下是由于数据库配置错误,或者是操作的表、数据库无权限。
 
再者,如果上述都没问题,那么很可能是传入的数据非法或是SQL语句不合法(比较常见的是在SQL语句中使用了默认的关键字,如Date,User之类)。并采用Debug跟踪的方式查看传入SQL语句中的变量是否正确,是否合法。
 
以上便是我使用的一些经验和方法。解决这个问题应该说花费了我很长的时间,差不多有一天半吧,最后才发现是由于数据库权限不足造成的。走了很多弯路啊…不过还好,还是解决了。呵呵….
===========================
今天我也碰到这个问题了  发现原因是 数据库中的表里的列名是mysql的关键字  很无奈. 由于种种原因,已经不能修改数据库里的表的列名了.
原来配置文件如下
<property name="check" type="java.lang.String">
            <column name="Check" length="2" not-null="true" />
        </property>
想了一种办法,是修改 配置文件
<property name="check" type="java.lang.String">
            <column name="`Check`" length="2" not-null="true" />
        </property>
check 是关键字.  hibernate生成的 sql语句 对于列名是没有用`` 包括进去 ,在配置文件里 列名加上``即可.注意不是''!
当然,最好的办法是建表的时候不用数据库的关键字.
mysql 关键字
 
分享到:
评论

相关推荐

    关键字user附近有语法错误解决方案

    警告: SQL Error: 156, ...org.hibernate.exception.SQLGrammarException: could not execute query org.hibernate.util.JDBCExceptionReporter logExceptions 严重: 关键字 'user' 附近有语法错误。 的解决方案。

    SSH整合项目中容易出现的错误

    nested exception is org.hibernate.exception.SQLGrammarException: could not execute query 这个错误是由于SQL语句有错误,导致查询失败。解决方法是检查SQL语句的正确性,确保语句正确无误。 4. 严重: Error ...

    hibernate 排错 宝典1

    ### 错误四:`org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update` **错误现象**: 在执行数据库批量操作时,Hibernate抛出`SQLGrammarException`,表明SQL语法错误或数据库不支持...

    MyEclipse注册机

    Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: ...

    MyEclipse报错说明

    3. **Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update** Hibernate在执行数据库批处理更新时出现SQL语法错误,可能是由于数据库表不存在或结构不符...

    精心整理的ssh2 一些错误问题的记录(推荐)

    ### 错误二:org.hibernate.exception.SQLGrammarException: could not get next sequence value 此错误与Hibernate框架相关,当尝试获取数据库中的下一个序列值时出现语法错误。这通常是因为配置不当或数据库查询...

    框架集合错误解决方案

    nested exception is org.hibernate.exception.SQLGrammarException: could not execute query ``` **问题描述:** 这通常是因为Hibernate执行SQL查询时遇到了语法错误或者数据表结构不匹配等问题。 **解决方法:...

    ssh框架报错分析集合

    nested exception is org.hibernate.exception.SQLGrammarException: could not execute query` 这个异常表明执行SQL查询时出现了语法错误。检查并修正相关的SQL语句,确保其符合SQL语法规范,并且与数据库表结构...

    SSH项目原本使用的sqlserver2005数据库现在改用MySql配置问题修改

    在这个场景中,异常的根因是嵌套的“org.hibernate.exception.SQLGrammarException: could not execute query”,这是Hibernate在处理SQL语句时抛出的异常,通常与SQL语法错误或表结构不匹配有关。当从SQL Server...

Global site tag (gtag.js) - Google Analytics