概要
MongoDBをクラウド上で提供しているmLab MongoDBというサービスがあるのですが、データの書き込みを行った時に、MongoError: This MongoDB deployment does not support retryable writes
のエラーが発生したので、対応方法をメモします。
原因
このStack Overflowの記事によると、mLabではMongoDBの接続設定retryWrites
オプションが使用できないので、falseにする必要があるとのこと。
retryWrites
オプションは書き込みのエラー発生時に、DB側で自動的にretryしてくれる機能で、公式のマニュアルによると、MongoDB4.2のドライバーだとデフォルトでtrueになるみたいです。
接続時の設定
以下はRailsのMongoidを使用した際の、retryWrites
オプションをfalseにする設定です。なお、設定ファイルmongoid.yml
の詳細については、mongoid-configurationを参照ください。
mongoid.yml
production:
clients:
default:
database: heroku_test
hosts:
- test111111.mlab.com:51180
options:
user: "test_user"
password: "test_password"
retry_writes: false
options: