当前位置: 首页 > 知识库问答 >
问题:

Grails错误-TNS:侦听器当前不知道连接描述符中给出的SID

太叔志尚
2023-03-14

根据本教程,我正在配置一个简单的grails应用程序。它在Grails附带的内部数据库中工作得很好。然后,我试图将oracle数据库与应用程序连接,但我得到以下错误。

错误2015-10-06 14:21:37,774[localhost-startStop-1]错误context.grailsContextLoader-初始化应用程序时出错:创建名为“Transaction ManagerPostProcessor”的bean时出错:bean初始化失败;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“事务管理器”的bean时出错:在设置bean属性“会话工厂”时无法解析对bean“会话工厂”的引用;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“会话工厂”的bean时出错:在设置bean属性“hibernate properties”时无法解析对bean“hibernate properties”的引用;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“hibernate properties”的bean时出错:在使用键[hibernate.diangion]设置bean属性“properties”时,无法解析对bean“方言检测器”的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为“方言检测器”的bean时出错:调用init方法失败;嵌套异常是org.springframework.jdbc.support.MetadataAccessException:提取DatabaseMetadata时出错;嵌套异常是org.apache.commons.dbcp.sqlNestedException:无法创建PoolableConnectionFactory(侦听器拒绝连接,错误如下:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID)消息:创建名为“Transaction ManagerPostProcessor”的bean时出错:bean初始化失败;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“事务管理器”的bean时出错:在设置bean属性“会话工厂”时无法解析对bean“会话工厂”的引用;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“会话工厂”的bean时出错:在设置bean属性“hibernate properties”时无法解析对bean“hibernate properties”的引用;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“hibernate properties”的bean时出错:在使用键[hibernate.diangion]设置bean属性“properties”时,无法解析对bean“方言检测器”的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为“方言检测器”的bean时出错:调用init方法失败;嵌套异常是org.springframework.jdbc.support.MetadataAccessException:提取DatabaseMetadata时出错;嵌套异常是org.apache.commons.dbcp.sqlNestedException:无法创建PoolableConnectionFactory(侦听器拒绝连接,错误如下:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID

这是我的datasource.groovy文件

dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "system"
    password = "password"


}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:oracle:thin:@tan.example.com:1521:orcl;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
            pooled = true
            properties {
               maxActive = -1
               minEvictableIdleTimeMillis=1800000
               timeBetweenEvictionRunsMillis=1800000
               numTestsPerEvictionRun=3
               testOnBorrow=true
               testWhileIdle=true
               testOnReturn=true
               validationQuery="SELECT 1"
            }
        }
    }
}

我已经在lib文件夹中有了jdbc驱动程序。你知道这里出了什么问题吗?谢谢你。

共有1个答案

屠华辉
2023-03-14

这在我的测试服务器上有效。TESTSERVER当然是服务器名,但也可以是IP地址。

development {
    dataSource {
        pooled = true
        dialect = org.hibernate.dialect.Oracle11gDialect
        driverClassName = 'oracle.jdbc.OracleDriver'
        username = 'username' // YOUR USERNAME AND PASS
        password = 'password'
        url = 'jdbc:oracle:thin:@TESTSERVER:1521:TESTDB'
        dbCreate = 'update'

    }
}
 类似资料: