2012-10-23 3 views
3

mongolab에 mongodb 복제 세트가 있습니다.Heroku + mongoose 연결 오류 : 주 서버가 없습니다.

나는 nodejs + mongoose를 사용하고 있습니다. 내 로컬 컴퓨터에서 연결을 시도 할 때 모든 것이 잘됩니다. 그러나 잘못된 Heroku가 뭔가 일이 발생 몽구스 이상한 오류가있어에 배포 후 : 여기

[Error: no primary server found in set] 

일부 코드 (server.js) :

async.series([ 
    function(callback){ 
    console.log('DB Connection: ' + siteConf.mongo_url); 
    mongoose.connect(siteConf.mongo_url, siteConf.mongo_options, callback); 
    },  
    function(callback){ 
    http.createServer(app).listen(siteConf.port, callback); 
    } 
], 
function(err, results){ 

if (err) { 
    console.log(err); 
} 

console.log('Running in ' + (process.env.NODE_ENV || 'development') + ' mode @ ' + siteConf.uri); 
    } 
); 

내가 연결 문자열로 사용하고이 URL :

mongodb://username:[email protected]:39897/pm_prod,mongodb://someid-a1.mongolab.com:39897 

내가 이해할 수없는 주요 사실은 내 머시닝과 heroku 클라우드 호스팅의 차이점은 무엇인가?

이미 node_modules를 제거하고 npm을 설치하여 heroku에서와 동일한 버전으로되어 있는지 확인했습니다. (왜냐하면 heroku는 배포 할 때마다 이것을 수행하기 때문입니다.)

감사하고 죄송합니다 나의 나쁜 영어

+0

확실하지합니다. MongoHQ가 데이터베이스에 사용되었습니다. 로컬 머신 + 로컬 MongoDB, 로컬 머신 + MongoHQ 인터페이스가 완벽하게 작동했습니다. Heroku + MongoHQ는 오류를 주었고 로그는별로 도움이되지 못했습니다. 며칠 동안 문제를 해결하는 데 소비했습니다. 기본적인 지원을 제외하고, Heroku는 $ 1000 달입니다; 여유가 없다. AWS로 이동하여 지금까지 문제가 없었습니다. – almypal

답변

4

이 URI에 문제가있을 수 있습니다. DB URI의 형식은 다음과 같습니다

mongodb://<user>:<pass>@host:port,host:port,...,host:port/db_name 

mongodb://username:[email protected]:39897/pm_prod,mongodb://someid-a1.mongolab.com:39897 

가되어야한다는 것을 의미한다 :

mongodb://username:[email protected]:39897,someid-a1.mongolab.com:39897/pm_prod 

또한 다른 사람을 위해 주목할 필요가 : 당신에게 Heroku의 MongoLab의 애드온을 사용하는 경우에 URI를 process.env.MONGOLAB_URI에서 환경 변수로 사용할 수 있으므로 코드에 URI를 넣을 필요가 없습니다.

이것은 Heroku와 Mongo 사이의 연결에 관한 실행중인 질문과 관련 될 수도 있습니다. 노드 몽고 드라이버이 표를 참조하는 https://github.com/jcottr/temps-mort 참조 : 나는 기술적 인 솔루션으로 여러분을 안내 할 수 있지만, Heroku가 문제의 비슷한 경험을 공유하는 것이 도움이 될 수

https://jira.mongodb.org/browse/NODE-4

https://jira.mongodb.org/browse/NODE-5

+0

이것은 아마도 대답 일 것입니다. 곧 공개되어야하는 mongodb 드라이버의 패치를 기다리고 있습니다. (버전 1.1.12). –