Logback DBAppender url

时间:2010-03-31 14:10:56

标签: sql oracle logback ora-00904

我正在尝试使用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>

2 个答案:

答案 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>