Java com.sybase.jdbc4.jdbc。SybConnection@36d4f39c:com.sybase.jdbc4.jdbc.SybSQLException:未找到双

Java com.sybase.jdbc4.jdbc。SybConnection@36d4f39c:com.sybase.jdbc4.jdbc.SybSQLException:未找到双,java,jdbc,jboss7.x,sybase,Java,Jdbc,Jboss7.x,Sybase,在我的项目中,我已将sybase数据库驱动程序从jconn3.jar升级到jconn4.jar。当我的应用程序连接到Sybase数据源时,出现以下错误。我已经在JBoss7服务器上部署了我的应用程序 [org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory] (default task-48) IJ030027: Destroying connection that is not valid, due to the foll

在我的项目中,我已将sybase数据库驱动程序从jconn3.jar升级到jconn4.jar。当我的应用程序连接到Sybase数据源时,出现以下错误。我已经在JBoss7服务器上部署了我的应用程序

[org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory] (default task-48) IJ030027: Destroying connection that is not valid, due to the following exception: com.sybase.jdbc4.jdbc.SybConnection@36d4f39c: com.sybase.jdbc4.jdbc.SybSQLException: dual not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).
at com.sybase.jdbc4.tds.Tds.processEed(Tds.java:4131)
at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:3247)
at com.sybase.jdbc4.jdbc.ResultGetter.nextResult(ResultGetter.java:78)
at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:294)
at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:276)
at com.sybase.jdbc4.jdbc.SybStatement.executeLoop(SybStatement.java:2828)
at com.sybase.jdbc4.jdbc.SybStatement.execute(SybStatement.java:2815)
at com.sybase.jdbc4.jdbc.SybStatement.execute(SybStatement.java:1447)
at org.jboss.jca.adapters.jdbc.CheckValidConnectionSQL.isValidConnection(CheckValidConnectionSQL.java:74)
at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:1272)
at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnectionFactory.getInvalidConnections(BaseWrapperManagedConnectionFactory.java:1085)
错误中的“未找到双”是什么意思?
你能告诉我这个问题的根本原因是什么并帮助解决它吗

我的数据源配置如下所示:

<datasource jta="false" jndi-name="java:/SybaseDS" pool-name="SybaseDS" enabled="true" use-ccm="false">
    <connection-url>*********************</connection-url>
    <driver-class>com.sybase.jdbc4.jdbc.SybDriver</driver-class>
    <driver>sybase</driver>
    <pool>
        <min-pool-size>10</min-pool-size>
        <max-pool-size>100</max-pool-size>
    </pool>
    <validation>
        <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
     </validation>
     <timeout>
          <set-tx-query-timeout>false</set-tx-query-timeout>
          <blocking-timeout-millis>0</blocking-timeout-millis>
          <idle-timeout-minutes>15</idle-timeout-minutes>
          <use-try-lock>0</use-try-lock>
          <allocation-retry>0</allocation-retry>
          <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
      </timeout>
      <statement>
            <share-prepared-statements>false</share-prepared-statements>
      </statement>
  </datasource>
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>

*********************
com.sybase.jdbc4.jdbc.SybDriver
赛贝斯
10
100
从双重选择中选择1
假的
假的
假的
0
15
0
0
0
假的

我将通过删除数据源中的连接验证查询来解决此问题,如下所示:

<datasource jta="false" jndi-name="java:/SybaseDS" pool-name="SybaseDS" enabled="true" use-ccm="false">
    <connection-url>*********************</connection-url>
    <driver-class>com.sybase.jdbc4.jdbc.SybDriver</driver-class>
    <driver>sybase</driver>
    <pool>
        <min-pool-size>10</min-pool-size>
        <max-pool-size>100</max-pool-size>
    </pool>
    <validation>
        <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"/>
     </validation>
     <timeout>
          <set-tx-query-timeout>false</set-tx-query-timeout>
          <blocking-timeout-millis>0</blocking-timeout-millis>
          <idle-timeout-minutes>15</idle-timeout-minutes>
          <use-try-lock>0</use-try-lock>
          <allocation-retry>0</allocation-retry>
          <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
      </timeout>
      <statement>
            <share-prepared-statements>false</share-prepared-statements>
      </statement>
  </datasource>
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
从双通道中选择1

Sybase数据库中不存在双表。

您的数据源配置是什么。看起来您有一个有效性检查,可以从dual中选择*或类似的内容。Sybase是否真的有一个
dual
表(我相信这是Oracle特有的东西)?Mark感谢您的回复。我的问题中包括了数据源配置。我也怀疑数据源配置有问题。这里需要更改或删除什么?正如我所说的,我猜(!)您的验证查询是错误的,因为我相信(但不确定),Sybase没有名为
dual
的表。如果它确实存在,您的用户就没有该表的权限。将其替换为在Sybase上工作的(简单)查询。谢谢Mark。从数据源中删除双重验证查询后,它就会工作。我将发布答案。希望它能帮助别人。