问题
Can anyone please explain why I am getting error Another user is already authenticated to this database. You must logout first when connecting to MongoDB using Flask MongoEngine?
from mongoengine.connection import get_db
from flask import Flask, jsonify, abort
from flask_cors import CORS
from flask_mongoengine import MongoEngine
from flask_restful import Api
def init_db():
return MongoEngine()
app = Flask(__name__)
CORS(app)
api = Api(app)
app.config.from_object('conf.settings')
db = init_db()
db.init_app(app)
@app.route('/health_check')
def on_health_check():
try:
db = get_db()
db.command('dbstats')
return jsonify(
status=200
)
except Exception as e:
logging.exception('on_health_check() exception -> {}'.format(str(e)))
abort(500, 'Could not connect to database')
app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)
conf/settings.py:
MONGODB_SETTINGS = {
'host': 'mongodb://username:password@mongo-rep-mongodb-replicaset-0.local:27017,mongo-rep-mongodb-replicaset-1.local:27017/db_name?replicaSet=whatever'
}
When I go to http://localhost:5000/health_check
, it always throws the Exception
with message as I described above.
回答1:
So I was running into the same issue today, but ended up resolving it by installing a previous version of pymongo, e.g. pip install pymongo==3.4.0 instead of the latest version 3.7.0. There might be a bug...
回答2:
[root@vm-lw-basic-idc-monitor-p01 home]# pip show
Metadata-Version: 2.0 Name: pymongo Version: 3.7.0 Summary: Python driver for MongoDB <http://www.mongodb.org> Home-page: http://github.com/mongodb/mongo-python-driver Author: Bernie Hackett Author-email: bernie@mongodb.com Installer: pip License: Apache License, Version 2.0 Location: /usr/lib64/python2.7/site-packages Requires: Classifiers: Development Status :: 5 - Production/Stable Intended Audience :: Developers License :: OSI Approved :: Apache Software License Operating System :: MacOS :: MacOS X Operating System :: Microsoft :: Windows Operating System :: POSIX Programming Language :: Python :: 2 Programming Language :: Python :: 2.6 Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 Programming Language :: Python :: 3.4 Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: PyPy opic :: Database You are using pip version 8.1.2, however version 10.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
pip install pymongo-3.5
我卸载之前的pymongo-3.7就好了,安装原先的3.5就好用的。。。。
回答3:
in my case, I changed mongo from standard to replica set. all my application machines started throwing this error after restarting the application.
Another user is already authenticated to this database. You must logout first
when I restarted my application machines. it was working fine.
very weird, but posting here since it can help someone.
来源:https://stackoverflow.com/questions/51220364/mongoengine-another-user-is-already-authenticated-to-this-database-you-must-l