我正在测试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
由于
答案 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中找到该文档。