【问题标题】:SQL Warning with Spring boot and SybaseSpring boot 和 Sybase 的 SQL 警告
【发布时间】:2020-12-17 14:34:22
【问题描述】:

我在使用 spring boot 和 sybase 的日志中收到很多 SQL 警告。

o.h.engine.jdbc.spi.SqlExceptionHelper   : [] SQL Warning Code: 0, SQLState: 010SK 
o.h.engine.jdbc.spi.SqlExceptionHelper   : [] 010SK: Database cannot set connection option SET_READONLY_TRUE. 
  
    
o.h.engine.jdbc.spi.SqlExceptionHelper   : [] 010SK: Database cannot set connection option SET_READONLY_FALSE.

谁能解释一下这背后的原因?

【问题讨论】:

  • 哪个 Sybase db 产品(ASE?IQ?SQLAnywhere?Advantage?)和版本?我不熟悉spring boot,所以......你能解释一下'SET_READONLY_FALSE'应该做什么,你试图将它设置为什么,以及你希望执行什么需要这个设置的操作? [我猜您要连接的 Sybase db 产品要么不支持此特定设置,要么正在发送应用程序不知道如何处理的响应,但需要更多详细信息来 a) 确定和 b) 来为你想要完成的事情找到一个解决方案)
  • 我也面临同样的问题。你找到这个问题的解决方案了吗?
  • 我找不到任何溶胶。

标签: java sql spring spring-boot sybase


【解决方案1】:

解决方案 1:

java.sql.Connection 有一个 setReadOnly(boolean) 方法,用于通知数据库为执行任何优化而请求的结果集的类型。但是 Sybase ASE 不需要任何优化,因此 setReadOnly() 会产生 SQLWarning。

为了抑制消息,您需要更新 MASTER 数据库中的 spt_mda 表。

update spt_mda set querytype = 4, set query = '0'
where mdinfo = 'SET_READONLY_FALSE'

update spt_mda set querytype = 4, set query = '0'
where mdinfo = 'SET_READONLY_TRUE'

这两个条目(它们是唯一的)默认设置为查询类型 3,这意味着“不支持”,这解释了 SQLWarning。

将它们更改为查询类型为“0”的 4(表示布尔值)基本上会导致 JDBC 驱动程序在没有警告的情况下返回 false..

解决方案 2:

您可以关闭/打开休眠日志模块的特定部分的日志记录,这些是不同的配置:

 # Hibernate logging
# Log everything (a lot of information, but very useful for troubleshooting)
log4j.logger.org.hibernate=FATAL
# Log all SQL DML statements as they are executed
log4j.logger.org.hibernate.SQL=INHERITED
# Log all JDBC parameters
log4j.logger.org.hibernate.type=INHERITED
# Log all SQL DDL statements as they are executed
log4j.logger.org.hibernate.tool.hbm2ddl=INHERITED
# Log the state of all entities (max 20 entities) associated with the session at flush time
log4j.logger.org.hibernate.pretty=INHERITED
# Log all second-level cache activity
log4j.logger.org.hibernate.cache=INHERITED
# Log all OSCache activity - used by Hibernate
log4j.logger.com.opensymphony.oscache=INHERITED
# Log transaction related activity
log4j.logger.org.hibernate.transaction=INHERITED
# Log all JDBC resource acquisition
log4j.logger.org.hibernate.jdbc=INHERITED
# Log all JAAS authorization requests
log4j.logger.org.hibernate.secure=INHERITED

可能的值:

OFF     
FATAL   
ERROR   
WARN    
INFO    
DEBUG   
TRACE   
ALL     

【讨论】:

  • 别忘了使用master作为用户:使用matser;
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多