Grails 3 MongoDB没有从application.yml

时间:2017-02-15 13:32:45

标签: mongodb grails

我正在测试Grail 3应用程序以连接在另一台服务器上运行的mogoDB。

独立java程序成功连接数据库。但是Grail 3应用程序无法连接到DB。例外显示它连接到localhost。

我想了解为什么它没有从aplication.yml文件读取连接字符串。

application.yml文件:

environments:
    development:
        grails:
            mongodb:
                connectionString: "mongodb://192.168.1.13:27017/test"

当我访问该页面时,看到此错误消息。

grails> 2017-02-14 22:52:28.116 ERROR --- [nio-8080-exec-9] o.g.web.errors.GrailsExceptionResolver   : MongoTimeoutException occurred when processing request: [GET] /book/index
Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]. Stacktrace follows:

为什么它连接到localhost?

尝试从这个答案没有用。

Installing and using MongoDB in Grails 3.x

由于

2 个答案:

答案 0 :(得分:3)

此配置在开发和生产中都适用于我。

environments:
development:
    grails:
        mongodb:
            host: "localhost"
            port: 27017
            username: ""
            password: ""
            databaseName: "mydb-dev"
production:
    grails:
        mongodb:
            host: "1.1.1.1"
            # host: "localhost"
            port: 27017
            username: ""
            password: ""
            databaseName: "mydb-prod"

我正在使用Grails 3.1.9和最新的MongoDB插件。

compile 'org.grails.plugins:mongodb'

答案 1 :(得分:2)

如果您仍想使用连接字符串而不是单独提供所有参数,则可以使用下面列出的url

environments:
    development:
        grails:
            mongodb:
                url: "mongodb://192.168.1.13:27017/test"

此方法还允许您在必要时提供查询参数。可以在MongoDB连接字符串部分的gorm manual中找到该文档。