现在的位置: 首页 > 综合 > 正文

再说Could not execute JDBC batch update

2013年09月15日 ⁄ 综合 ⁄ 共 1719字 ⁄ 字号 评论关闭

上一次说了Hibernate这个异常,因为我那次没有把自增的主键设为"increment",不过后来发现其他情况也会出现这个异常,原因情况比较多,归纳了一下,觉得还是因为Hibernate并没有跟数据库有非常密切的交互,所以后台数据库里出问题了,也不能及时反映在Hibernate中,而仅仅用一个Could not execute JDBC batch update来应付开发人员~

解决办法就是,我们可以去查看数据库日志,每当Hibernate出现这个异常的时候,一般来说都是因为不满足数据库的约束造成的,比如唯一约束,外键约束,自增约束等等~ 我们只要配置好了数据库的日志,那么日志就会清清楚楚地告诉我们是哪里出了问题~

这里我来简单说一下PostgreSQL的日志配置方法:

1- 打开PostgreSQL安装目录下的data文件夹下的postgresql.conf文件,修改 # - What to Log - 那里如下:

# - What to Log -

debug_print_parse 
= off
debug_print_rewritten 
= off
debug_print_plan 
= off
debug_pretty_print 
= off
log_connections 
= on
log_disconnections 
= on
log_duration 
= on
log_line_prefix 
= '<%t;PID:%p;Command Tag:%i;SessionID:%c;SessionLineNum:%l;SessionStartTime:%s;TranID:%x>'            # Special values:
                    #   %u = user name
                    #   %d 
= database name
                    #   %r 
= remote host and port
                    #   %h 
= remote host
                    #   %p 
= PID
                    #   %t 
= timestamp (no milliseconds)
                    #   %m 
= timestamp with milliseconds
                    #   %i 
= command tag
                    #   %c 
= session id
                    #   %l 
= session line number
                    #   %s 
= session start timestamp
                    #   %x 
= transaction id
                    #   %q 
= stop here in non-session 
                    #        processes
                    #   %% 
= '%'
                    # e.g. '<%u%%%d> '
log_statement 
= 'all'            # none, ddl, mod, all
#log_hostname 
= off

注意:log_line_prefix 那行配置的就是你将从日志文件中看到的东西~ 执行语句,变量都包括了,一览无余~

2- 修改完别忘了保存,然后在控制面板-管理工具-服务中重启PostgreSQL服务~ 查看日志的地方可以在data文件夹下的pg_log文件夹里,也可以到pgAdmin中,选中数据库,然后点“工具-服务器状态-日志档”。

哈哈,这回再有Could not execute JDBC batch update异常,就再也不怕找不到原因摸不着头脑了~

有疑问或者建议,随时跟我联系给我留言~

抱歉!评论已关闭.