Grails 3.0.1 不支持 application.yml mongo 配置

Posted

技术标签:

【中文标题】Grails 3.0.1 不支持 application.yml mongo 配置【英文标题】:Grails 3.0.1 not honoring application.yml mongo config 【发布时间】:2015-06-16 09:45:02 【问题描述】:

尝试仅使用 mongodb 启动 Grails 3.0.1 应用程序。 mongo 插件似乎没有读取 application.yml 文件中的 mongo 配置。我把它放在环境开发部分、环境部分之外等,但它只使用 localhost:27017 的默认配置和“test”的数据库名称。

这是当前配置:

// default application.yml stuff
environments:
  development:
   grails:
      mongo:
         host: 'ip_address_here'
         port: 27017
         databaseName: 'app_dev'
   test:
// rest of application.yml stuff

作为测试,我在 BootStrap 中转储了 grailsApplication.config 数据,mongo 的东西确实出现在那里,所以它正在加载。

【问题讨论】:

请在github.com/grails/grails-data-mapping/issues 提交错误报告。感谢您的反馈。 【参考方案1】:

这是适合我的配置

Grails 3.0.1 org.grails.plugins:mongodb:4.0.0

environments:
    development:
        grails:
            mongodb:
                connectionString: "mongodb://127.0.0.1/test"
                autoConnectRetry: true
                connectTimeout: 0
                maxWaitTime: 120000
                socketTimeout: 0
                socketKeepAlive: false
                writeNumer: 0
                writeTimeout: 0
                writeFsync: false
        dataSource:
            dbCreate: create-drop

【讨论】:

谢谢,我最终使用了一个连接字符串,但几周前还提交了一个补丁来让另一种方法工作。我认为它尚未被接受。 connectionString 解决方法做到了。 URI 格式记录在:api.mongodb.org/java/3.0/com/mongodb/MongoClientURI.html【参考方案2】:

查看here 了解所有配置选项。 特别注意“mongodb”而不是“mongo”

【讨论】:

更改为 mongodb 适用于除数据库名称之外的所有内容。查看代码,似乎只有在它使用的连接字符串(并通过测试验证)时才能识别 databaseName。然而,我上面展示的格式在使用这个插件的 grails 2.4.x 应用程序中工作。 是的,你是对的!我正在使用连接字符串,这就是它对我有用的原因。但你肯定发现了一个错误!请归档。【参考方案3】:

文档可能有点令人困惑,这应该可以解决身份验证问题

 connectionString: "mongodb://myUserName:myPassword@ipOfServer:portOfServer/dbName"

【讨论】:

以上是关于Grails 3.0.1 不支持 application.yml mongo 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Grails 3.0.1 中启用 CORS

如何在 Tomcat7 中部署 Grails 3.0.1 战争文件?

Eclipse 中对 Grails Web 应用程序的调试支持不佳

Grails 2.3.x 是不是支持 JDK 8

Eclipse 中的 Grails 2.2.0 支持

Grails 3.0 <g:remoteLink ...> 由于弃用而替换 Ajax 调用