3

MongoEngine ORMでMongoDBを使用するFlaskを使用してWebサイトを構築しています。新たなスタートを切るために、ubuntu 14.04 開発マシンですべての apt および pip パッケージをアップグレードしました。残念ながら、これにより MongoDB への接続が切断されました。

Traceback (most recent call last):
  File "./run.py", line 4, in <module>
    from app import app, socketio
  File "/home/kr65/beta/app/__init__.py", line 21, in <module>
    mongoDb = MongoEngine(app)
  File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 33, in __init__
    self.init_app(app)
  File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 66, in init_app
    self.connection = mongoengine.connect(**conn_settings)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 164, in connect
    return get_connection(alias)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 126, in get_connection
    raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e))
mongoengine.connection.ConnectionError: Cannot connect to database default :
False is not a read preference.

MongoDB が起動しているかどうかを確認しました。

$ sudo service mongodb status
mongodb start/running, process 781

そして、インタラクティブなコマンドラインに入ることができれば:

$ mongo
MongoDB shell version: 2.4.9
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings:
Tue Apr 14 09:14:10.267 [initandlisten]
Tue Apr 14 09:14:10.267 [initandlisten] ** WARNING: You are running in OpenVZ. This is known to be broken!!!
Tue Apr 14 09:14:10.267 [initandlisten]
>

コードやパスワードなどは何も変更していません。再起動してmongoDBを再起動しましたが、何も機能しません。私の設定は次のようなものです:

MONGODB_SETTINGS = {
    'db': 'mydatabasename'
}

そして、次のように接続をインスタンス化します(以前は機能していました):

app = Flask(__name__)
app.config.from_object('config')
mongoDb = MongoEngine(app)

私は実際には何も変更していないので、どこで解決策を探すべきかわかりません。これを解決する方法のヒントはありますか?

[編集] @lapinkoira のヒントにより、MongoDB が正しく起動するようになりましたが、クエリ中に以下のエラーが発生するようになりました。これを解決する方法はありますか?

File "/home/kr65/beta/app/views/webviews.py", line 476, in getDoc
    userDoc = UserDocument.objects(id=docId).first()
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/queryset/base.py", line 309, in first
    result = queryset[0]
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/queryset/base.py", line 160, in __getitem__
    return queryset._document._from_son(queryset._cursor[key],
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/queryset/base.py", line 1410, in _cursor
    **self._cursor_args)
  File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 924, in find
    return Cursor(self, *args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'snapshot'
4

3 に答える 3

3

デフォルトの read_preference 値が False のようです。これを試して、インポートに追加してください:

from pymongo import read_preferences

これをmongo構成辞書に追加します:

'read_preference': read_preferences.ReadPreference.PRIMARY
于 2015-04-14T07:43:49.513 に答える