我太新了,并试图创建一个简单的应用程序推送到heroku。我有应用程序,并在我的localhost上工作,同时在localhost上运行mongo DB。我在heroku中向应用程序添加了一个mongo数据库,但它不会在heroku上打开(应用程序不是数据库)。我不知道问题是什么,但是我需要以某种方式将我的应用程序连接到heroku数据库吗?在更改database.properties文件时?我尝试使用heroku DB在本地测试它,使用此URL(我可以使用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包构建它时,我得到了这个错误:
结果:
错误测试: testCountAllNotebooks(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testFindNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testFindAllNotebooks(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testFindNotebookEntries(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testSaveNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testDeleteNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testCountAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未经授权的db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testFindNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testFindAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权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):命令失败[命令失败[count] {“断言”:“未经授权的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] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0} testDeleteNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}
测试运行:14,失败:0,错误:12,跳过:0
[INFO] -------------------------------------------- ----------------------------
[ERROR] BUILD FAILURE
[INFO] -------------------------------------------- ----------------------------
[INFO]有测试失败。
如果有人可以告诉我如何在mvn项目中使用除本地之外的其他数据库,那么主要问题就是这里的任何帮助。
答案 0 :(得分:0)
[此帖似乎处于休眠状态,但我遇到了同样的问题,这是Google的最佳匹配。]
我正在使用Spring / Roo / Mongo应用程序,它在“dev”模式下运行良好,但是当部署到云提供程序(OpenShift,CloudBees,Heroku等)并连接到MongoHQ时,数据库连接失败了消息:
命令失败[命令失败[count] {“ok”:0.0,“errmsg”: “未授权”}
原来问题出在自动生成的 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系统属性来使自动配置更容易,那将是非常好的。