MongoHQHerokuアドオンに問題があります。ローカルで私のアプリは動作し、os変数はHerokuに存在し、整形式です。ただし、dbにアクセスしようとすると、エラーがスローされますOperationFailure: database error: unauthorized db:my_database ns:my_database.cars lock type:0 client:128.62.187.133
。MongoHQから接続文字列をハードコーディングしてローカルで実行しようとすると、同じエラーが発生します。
私のアプリは以下の通りです:
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サポートは私を助けました。問題はmy_database
、MongoHQアドオンから与えられた実際のDB名ではなく、データベースを呼び出していたことです。例:db = connection.app52314314
。その変更はそれを修正しました。