MongoHQ Heroku 애드온에 문제가 있습니다. 로컬로 내 애플 리케이션 및 os 변수가 존재 하 고 잘 - Heroku에 형성 작동합니다. 그러나 db에 액세스하려고하면 오류가 발생합니다 : OperationFailure: database error: unauthorized db:my_database ns:my_database.cars lock type:0 client:128.62.187.133
. MongoHQ에서 연결 문자열을 하드 코딩하여 로컬로 실행하려고하면 같은 오류가 발생합니다.Heroku MongoHQ 애드온 및 PyMongo - OperationFailure : 데이터베이스 오류 : 무단
내 응용 프로그램은 다음과 같습니다 :
import os
import datetime
from flask import Flask
from flask import g
from flask import jsonify
from flask import json
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
from flask import make_response
import pymongo
from pymongo import Connection
from bson import BSON
from bson import json_util
app = Flask(__name__)
def mongo_conn():
# Format: MONGOHQ_URL: mongodb://<user>:<pass>@<base_url>:<port>/<url_path>
if os.environ.get('MONGOHQ_URL'):
return Connection(os.environ['MONGOHQ_URL'])
else:
return Connection()
@app.route('/', methods=['GET', 'POST'])
def hello():
# Get your DB
connection = mongo_conn()
db = connection.my_database
# Create an object
car = {"brand": "Ford",
"model": "Mustang",
"date": datetime.datetime.utcnow()}
# Get your collection
cars = db.cars # crashes
# Insert it
cars.insert(car)
...
편집 : MongoHQ 지원이 나를 도왔다. 문제는 내가 MongoHQ addon에 의해 나에게 주어진 실제 DB 이름 대신에 나의 데이터베이스 my_database
을 부르고 있었다는 것이었다. 예 : db = connection.app52314314
. 그 변화는 그것을 고쳤다.
'db = connection.my_database' 바로 다음에'db.authenticate (...)'호출을 삽입 할 때와 같은 문제가 없습니다. –
이메일을 보냈습니다. –
이메일로 답변드립니다. 해결 방법은 DB 이름을 MongoHQ db와 동일하게 지정하는 것입니다. 전체 답변 편집을 참조하십시오. –