我正在尝试将Oracle数据库用于Grails项目。我使用命令行工具。
到目前为止:
我已将ojdb6放入我必须自己创建的lib目录中,位于我的应用程序的根目录
我修改了application.yml,如下所示:
dataSource:
pooled: true
jmxExport: true
driverClassName: oracle.jdbc.OracleDriver
username: usrname
password: pwd
environments:
development:
dataSource:
dbCreate: create-drop
url: jdbc:oracle:thin:@//url:port/db
test:
dataSource:
dbCreate: update
url: jdbc:oracle:thin:@//url:port/db
production:
dataSource:
dbCreate: update
url: jdbc:oracle:thin:@//url:port/db
properties:
jmxEnabled: true
initialSize: 5
maxActive: 50
minIdle: 5
maxIdle: 25
maxWait: 10000
maxAge: 600000
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 60000
validationQuery: SELECT 1
validationQueryTimeout: 3
validationInterval: 15000
testOnBorrow: true
testWhileIdle: true
testOnReturn: false
jdbcInterceptors: ConnectionState
defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
我还创建了一个带有Integer属性的域类,只是试一试。
然而,它似乎不起作用。我收到一条巨大的错误消息,甚至不适合我的命令窗口。当我使用--stacktrace时,第一条消息是"无法启动服务器"。
我一直试图解决这个问题三天,欢迎任何想法/评论。谢谢你。
附注:当我使用默认数据库时,everythink工作正常,而不是更改配置中的任何内容。
答案 0 :(得分:5)
尝试下面,它应该工作。如果它没有发布堆栈跟踪。下面的片段为我工作。
添加依赖项 runtime' oracle:ojdbc6:11.2.0.4.0'
application.yml的变化:
environments:
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password:
development:
dataSource:
dbCreate: validate
url: jdbc:oracle:thin:@xxxx:1521:xx
driverClassName: oracle.jdbc.OracleDriver
dialect: org.hibernate.dialect.Oracle10gDialect
username: "XXXXXX"
password: "XXXXXX"
properties:
***: **
***: **
test:
dataSource:
dbCreate: update
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
production:
dataSource:
dbCreate: update
url: jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
properties:
jmxEnabled: true
initialSize: 5
maxActive: 50
minIdle: 5
maxIdle: 25
maxWait: 10000
maxAge: 600000
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 60000
validationQuery: SELECT 1
validationQueryTimeout: 3
validationInterval: 15000
testOnBorrow: true
testWhileIdle: true
testOnReturn: false
jdbcInterceptors: ConnectionState
defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
答案 1 :(得分:0)
在Oracle DB上,验证语句(属性validationQuery:SELECT 1)应该类似于:
"SELECT 1 FROM DUAL"
Oracle不支持SELECT 1
答案 2 :(得分:0)
我最近遇到了类似的问题,在我的情况下,这是由于使用了与我的Oracle数据库配置不匹配的格式;这是我发现的:
如果您的数据库使用 SID ,则您的网址应采用以下格式:
url: jdbc:oracle:thin:@url:port:sid
,
e.g。 url: jdbc:oracle:thin:@192.168.1.44:1521:testdb
如果您的数据库使用服务名称,则您的网址应采用以下格式:
url: jdbc:oracle:thin:@//url:port/servicename
e.g。 url: jdbc:oracle:thin:@//localhost:1521/testdb
希望这有帮助