【问题标题】:Error in configuring Mysql database in Grails在 Grails 中配置 Mysql 数据库时出错
【发布时间】:2011-07-15 07:34:02
【问题描述】:

我通过在我的系统中安装 MySql 并在 X/lib 目录(其中 X 是我的应用程序名称)中放置了它的驱动程序,为 grails 中的 MySql 数据库进行了配置。我已更改 DataSource.groovy 以冲突更改。但是当我使用命令grails run-app 运行我的应用程序时,我收到了一个错误,因为

 ERROR spring.BeanBuilder  - WARNING: Your cache provider is set to 'com.opensymphony.oscache.hibernate.OSCacheProvider' in DataSource.groovy, however the class for this provider cannot be found.

Grails 开始使用它的内置数据库..

如何摆脱这个错误?

DataSource.groovy 代码是:

dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "grails"
password = "server"
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class =
'com.opensymphony.oscache.hibernate.OSCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
// one of 'create', 'create-drop','update'
dbCreate = "create-drop"
url = "jdbc:mysql://localhost:3306/racetrack_dev?autoreconnect=true"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/racetrack_dev?autoreconnect=true"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/racetrack_dev?autoreconnect=true"
}
}
}

提前致谢。

【问题讨论】:

  • 你能添加你的 DataSource.groovy 文件和 excpetion 堆栈跟踪吗?
  • 您应该将 BuildConfig.groovy 的连接器添加到 dependencies 部分,如下所示:runtime 'mysql:mysql-connector-java:5.1.13';另外,你能发布你的 DataSource.groovy 吗?
  • 您是否更改了grails-app/conf/Datasources.groovy 文件以使url 字段指向mysql?
  • 是的,我做了,并添加了DataSource.groovy 代码。

标签: mysql grails groovy


【解决方案1】:

您使用什么版本的 grails 来创建 DataSource.groovy 文件?

Grails 1.3.7 的休眠块为:

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}

我认为哪个可以解释您的错误消息? (因为您已将其设置为使用旧的 OSCacheProvider


编辑

这些是我刚刚尝试的步骤,一切都按预期工作:

  1. 新建一个数据库(我叫我的ants

  2. 创建 grails 应用程序

    grails create-app ants
    cd ants
    
  3. 编辑grails-app/conf/BuildConfig.groovy 文件,并取消注释行:

    mavenCentral()
    

    runtime 'mysql:mysql-connector-java:5.1.13'
    
  4. 编辑文件grails-app/conf/DataSource.groovy

    将 dataSource 块更改为:

    dataSource {
        pooled = true
        driverClassName = "com.mysql.jdbc.Driver"
        username = ""
        password = ""
    }
    

    和 url(在每个环境中)到

        url = "jdbc:mysql://localhost:3306/ants?autoreconnect=true"
    
  5. 创建域类:

    grails create-domain-class ants.Runners
    
  6. 运行应用程序

    grails run-app
    

然后,当您检查数据库时,您将拥有一个 runners

我猜你正在检查错误的数据库(你设置了一个开发、测试和主数据库,每个环境一个)

【讨论】:

  • 不,我使用的是 Grails 1.3.7,但我使用的是专注于 Grails 1.2 的书。这可行,但是在使用grails run-app 运行应用程序然后检查 MySql 表后,我发现其中还没有创建表。
  • 您是否创建了域对象?
  • 是的,我已经创建了域对象,例如 race,runners 等。我怀疑是在将数据库 url 更改为 MySql 之后。我是否需要创建新的域对象来存储在 Mysql 中?或者旧创建的将在 MySql 中复制?因为我的作者说,当我们运行grails run-app 时,已经创建的域对象将进入 MySql 表(表已经创建!)。是这样吗?
  • 重启应用就等于使用grails run-app再次运行?我说的对吗?还是重启需要其他命令?
  • 停止运行,然后运行grails run-app
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-27
  • 2015-03-06
  • 2021-01-06
  • 2012-06-26
  • 2018-01-24
  • 1970-01-01
相关资源
最近更新 更多