我正在尝试使用Logback的DBAppender。我的logback.xml有以下appender:
</appender>
<appender name="DatabaseAppender" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>oracle.jdbc.OracleDriver</driverClass>
<url>jdbc:oracle:thin:@HOST_URL:PORT:SERVICE_NAME</url>
<user>USER</user>
<password>PASS</password>
</connectionSource>
</appender>
给定的url与同一个项目中的其他java类一起使用,但是失败并且返回时出现以下错误
ORA-00904: "ARG3": invalid identifier
at java.sql.SQLException: ORA-00904: "ARG3": invalid identifier
其中ARG3是<url>jdbc:oracle:thin:@HOST_URL:PORT:SERVICEID</url>
答案 0 :(得分:3)
我对导致此错误的Oracle语句感兴趣。 我的猜测是它正在尝试INSERT INTO表(arg1,arg2,arg3)值(...); 当表不包含该列时。
如果您不知道该表是什么,那么在遇到904错误时检查here是否强制执行错误转储。
我可以做一个
ALTER system SET EVENTS '904 TRACE NAME ERRORSTACK LEVEL 3';
然后,当引发错误时,数据库会生成一个跟踪文件,该文件应显示类似于以下内容的问题语句:
ORA-00904: "FRFRF": invalid identifier
Current SQL statement for this session:
select frfrf from dual
答案 1 :(得分:0)
对于DATASOURCE CONNECTIONS:
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource
class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>oracle.jdbc.driver.OracleDriver</driverClass>
<jdbcUrl>jdbc:oracle:thin:@localhost:1521:XE</jdbcUrl>
<user>system</user>
<password>a</password>
</dataSource>
</connectionSource>
</appender>
对于DRIVERMANAGER连接:
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://host_name:3306/datebase_name</url>
<user>username</user>
<password>password</password>
</connectionSource>
</appender>