Lorsque j'utilise la fonction de transaction pymongo 3.7 pour me connecter au serveur mongo 4.0, cette erreur "Les numéros de transaction ne sont autorisés que sur un membre de jeu de répliques ou des mongos" s'est produite et je ne trouve aucune réponse pour résoudre ce problème. Mon code est:
from pymongo import MongoClient
conn = MongoClient(Host, port)
tb = conn.collector_gateway.try_table
with conn.start_session() as session:
with session.start_transaction():
tb.insert_one({"sku": "abc123", "qty": 100}, session=session)
L'erreur est:
Traceback (most recent call last):
File "/Users/yuzgu/PycharmProjects/seller_loss_alert/try_mongo.py", line 22, in <module>
tb.insert_one({"sku": "abc123", "qty": 100}, session=session)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/collection.py", line 693, in insert_one
session=session),
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/collection.py", line 607, in _insert
bypass_doc_val, session)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/collection.py", line 595, in _insert_one
acknowledged, _insert_command, session)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1243, in _retryable_write
return self._retry_with_session(retryable, func, s, None)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/mongo_client.py", line 1196, in _retry_with_session
return func(session, sock_info, retryable)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/collection.py", line 590, in _insert_command
retryable_write=retryable_write)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/pool.py", line 579, in command
unacknowledged=unacknowledged)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/network.py", line 150, in command
parse_write_concern_error=parse_write_concern_error)
File "/Users/yuzgu/anaconda3/lib/python3.6/site-packages/pymongo/helpers.py", line 155, in _check_command_response
raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: Transaction numbers are only allowed on a replica set member or mongos
Depuis que la fonction de transaction mongo a été publiée cette année, je n'ai pas trouvé la solution, quelqu'un peut-il m'aider avec ce problème?
Les transactions ne sont disponibles que dans une configuration de jeu de réplicas ( https://docs.mongodb.com/master/core/transactions/#transactions-and-replica-sets ):
Les transactions multi-documents sont disponibles uniquement pour les jeux de réplicas.
Ce message d'erreur s'affiche lorsque vous tentez d'effectuer une opération transactionnelle sur une instance mongod
autonome.
Veuillez consulter la page Transactions pour plus de détails et exigences.