然后报的异常是:
【nohup.out】文件报的异常:
Traceback (most recent call last):
File "./sync.py", line 14, in
from mongosync.command_options import CommandOptions
File "/data/soft/py-mongo-sync-dev/mongosync/command_options.py", line 5, in
from mongosync.config_file import ConfigFile
File "/data/soft/py-mongo-sync-dev/mongosync/config_file.py", line 1, in
import toml
ImportError: No module named toml
Traceback (most recent call last):
File "./sync.py", line 29, in
syncer.run()
File "/data/soft/py-mongo-sync-dev/mongosync/synchronizer.py", line 67, in run
self._sync()
File "/data/soft/py-mongo-sync-dev/mongosync/synchronizer.py", line 85, in _sync
self._sync_oplog(oplog_start)
File "/data/soft/py-mongo-sync-dev/mongosync/mongo_synchronizer.py", line 215, in _sync_oplog
self._dst.replay_oplog(oplog)
File "/data/soft/py-mongo-sync-dev/mongosync/db.py", line 169, in replay_oplog
raise e
bson.errors.InvalidDocument: key 'otherData.orderNo' must not contain '.'
Mongodb环境: 3.4.2 使用的是:py-mongo-dev 使用的建立索引语句: db.notice.ensureIndex({"otherData.orderNo" : 1}, { partialFilterExpression: {"otherData.orderNo" :{"$exists" : true}} , "background" : true} );
然后报的异常是: 【nohup.out】文件报的异常: Traceback (most recent call last): File "./sync.py", line 14, in
from mongosync.command_options import CommandOptions
File "/data/soft/py-mongo-sync-dev/mongosync/command_options.py", line 5, in
from mongosync.config_file import ConfigFile
File "/data/soft/py-mongo-sync-dev/mongosync/config_file.py", line 1, in
import toml
ImportError: No module named toml
Traceback (most recent call last):
File "./sync.py", line 29, in
syncer.run()
File "/data/soft/py-mongo-sync-dev/mongosync/synchronizer.py", line 67, in run
self._sync()
File "/data/soft/py-mongo-sync-dev/mongosync/synchronizer.py", line 85, in _sync
self._sync_oplog(oplog_start)
File "/data/soft/py-mongo-sync-dev/mongosync/mongo_synchronizer.py", line 215, in _sync_oplog
self._dst.replay_oplog(oplog)
File "/data/soft/py-mongo-sync-dev/mongosync/db.py", line 169, in replay_oplog
raise e
bson.errors.InvalidDocument: key 'otherData.orderNo' must not contain '.'
【sync.log】文件报的异常: 2019-01-29 00:00:07,264 ERROR key 'otherData.orderNo' must not contain '.': SON([(u'ts', Timestamp(1548691207, 116)), (u't', 66L), (u'h', -721035070606281851L), (u'v', 2), (u'op', u'i'), (u'ns', u'xxxxxxxxxxx.system.indexes'), (u'o', SON([(u'v', 1), (u'key', SON([(u'otherData.orderNo', 1.0)])), (u'name', u'otherData.orderNo_1'), (u'ns', u'xxxxxxxxxxx.notice'), (u'partialFilterExpression', SON([(u'otherData.orderNo', SON([(u'$exists', True)]))])), (u'background', True), ('_id', ObjectId('5c4f270770620c36bc114ed8'))]))])
xxxxxxxxxxx是database.
猜想: 应该是您的代码对深层索引带点的解析有点小问题。 这个是在dev上进行测试,估计master应该也是有问题。 叨扰了。