6

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。その変更はそれを修正しました。

4

2 に答える 2

3

authenticate接続した直後に、DBに対してコマンドを実行する必要がある可能性があります。

次のようなものを試してください。

db.authenticate([USER], [PASSWORD])

それでも問題が解決しない場合は、support@mongohq.comまでメールでお問い合わせください。特定のDBのサポートを提供します。

于 2012-10-20T02:25:26.950 に答える
1

あなたはそれをすべてする必要はありません。あなたは簡単にできます:

from pymongo import MongoClient

client = MongoClient(os.environ['MONGOHQ_URL'])
mongo_db = client.get_default_database()

それは自動的にあなたを認証し、<url_path>あなたの接続URLの一部であるプロビジョニングされたデータベースに接続します。

于 2013-08-25T23:56:51.703 に答える