1

我也是新手,正在尝试创建一个简单的应用程序来推送到 heroku。我已经启动了应用程序并在我的本地主机上工作,并且在本地主机上运行了一个 mongo DB。我在 heroku 中的应用程序中添加了一个 mongo 数据库,但它不会在 heroku 上打开(应用程序不是数据库)。我不知道问题是什么,但我需要以某种方式将我的应用程序连接到 heroku 数据库吗?就像更改 database.properties 文件一样?我尝试通过获取此 URL 使用 heroku DB 在本地对其进行测试(我可以使用 mongoctl 很好地登录数据库):

mongodb://heroku_app10830648:************************@ds047387.mongolab.com:4738/heroku_app10830648

并将信息放入 database.properties 文件中:

#Updated at Wed Jan 09 19:16:49 MST 2013
#Wed Jan 09 19:16:49 MST 2013
mongo.database=heroku_app10830648
mongo.host=ds047387.mongolab.com
mongo.password=***********************
mongo.port=47387
mongo.username=heroku_app10830648

但是当我用 mvn package 构建它时,我得到了这个错误:


测试

结果 :

错误测试:testCountAllNotebooks(com.xebia.shortnotes.domain.NotebookIntegrationTest): command failed [command failed [count] { "assertion" : "unauthorized db:heroku_app10830648 ns:heroku_app10830648.notebook lock type:0 client:71.208.224.103" ,“assertionCode”:10057,“errmsg”:“db断言失败”,“ok”:0.0} testFindNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“assertion”:“未经授权的数据库:heroku_app10830648 ns:heroku_app10830648.notebook 锁定类型:0 客户端:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db 断言失败”,“ok”:0.0} testFindAllNotebooks(com.xebia.shortnotes. domain.NotebookIntegrationTest):命令失败 [命令失败 [count] {“assertion”:“未经授权的 db:heroku_app10830648 ns:heroku_app10830648.notebook lock type:0 client:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db assertion failure”, “ok”:0.0} testFindNotebookEntries(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[command failed [count] {“assertion”:“未经授权的db:heroku_app10830648 ns:heroku_app10830648.notebook lock type:0 client:71.208。 224.103”,“assertionCode”:10057,“errmsg”:“db 断言失败”,“ok”:0.0} testSaveNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败 [命令失败 [count] {“assertion” :“未经授权的数据库:heroku_app10830648 ns:heroku_app10830648.notebook lock type:0 client:71.208.224.103" , "assertionCode" : 10057 , "errmsg" : "db assertion failure" , "ok" : 0.0} testDeleteNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest): 命令failed [command failed [count] {“assertion”:“未经授权的 db:heroku_app10830648 ns:heroku_app10830648.notebook lock type:0 client:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db assertion failure”,“好的”:0.0} testCountAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[计数] {“断言”:“未经授权的数据库:heroku_app10830648 ns:heroku_app10830648.note锁类型:0客户端:71.208.224.103 " , "assertionCode" : 10057 , "errmsg" : "db 断言失败”,“ok”:0.0} testFindNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败 [command failed [count] {“assertion”:“未经授权的 db:heroku_app10830648 ns:heroku_app10830648.note 锁定类型: 0 客户端:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db 断言失败”,“ok”:0.0} testFindAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败 [命令失败 [计数] { "assertion" : "unauthorized db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103" , "assertionCode" : 10057 , "errmsg" : "db assertion failure" , "ok" : 0.0} testFindNoteEntries (com.xebia.shortnotes.domain.NoteIntegrationTest):command failed [command failed [count] {“assertion”:“未经授权的 db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db assertion failure”, “ok”:0.0} testSaveNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“assertion”:“未经授权的db:heroku_app10830648 ns:heroku_app10830648.note锁类型:0客户端:71.208。 224.103”,“assertionCode”:10057,“errmsg”:“db 断言失败”,“ok”:0.0} testDeleteNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败 [命令失败 [count] {“assertion” :“未经授权的数据库:heroku_app10830648 ns:heroku_app10830648.note 锁定类型:0 客户端:71.208.224.103”,“assertionCode”:10057,“errmsg”:“db 断言失败”,“ok”:0.0}

测试运行:14,失败:0,错误:12,跳过:0

[信息] --------------------------------------------- -------------------------

[错误] 构建失败

[信息] --------------------------------------------- -------------------------

[INFO] 有测试失败。

任何帮助将不胜感激这里的主要问题是是否有人可以告诉我如何在 mvn 项目中使用除本地数据库之外的其他数据库。

4

1 回答 1

0

【这个帖子好像是休眠的,不过我也遇到了同样的问题,而且这是谷歌上的顶配。】

我正在使用在“开发”模式下运行良好的 Spring/Roo/Mongo 应用程序,但是当部署到云提供商(OpenShift、CloudBees、Heroku 等)并连接到 MongoHQ 时,数据库连接失败并显示以下消息:

命令失败 [命令失败 [count] { "ok" : 0.0 , "errmsg" : "unauthorized"}

原来问题出在自动生成的applicationContext-mongo.xml文件中。您需要添加用户名密码属性:

<mongo:db-factory dbname="${mongo.name}" host="${mongo.host}" id="mongoDbFactory" port="${mongo.port}" username="${mongo.username}" password="${mongo.password}"/>

这是官方文档的(可能已过时)链接(如果有帮助):http ://static.springsource.org/spring-data/data-mongo/docs/1.0.0.M5/reference/html/#d0e1210

另一个提示:使用spring.profiles.active让您的应用程序根据开发模式选择正确的凭据/配置,或者在特定的云提供商中运行。如果每个 PaaS 都定义一个像“current.paas=heroku”这样的 Java 系统属性来简化自动配置,那就太好了。

于 2013-03-29T03:10:01.513 回答