我的目标是将Modulus的转储导入我的本地MongoDB。我有一个脚本,该脚本接收了所有JSON文件并一个一个地导入了它们。在我安装Sierra之前,该脚本非常有效。这是脚本:

#!/bin/bash
FILES=/Users/username/Documents/ModulusDumps/1-12-17/*
for f in $FILES
do
  filename="${f##*/}"
  basename="${filename%.[^.]*}"
  echo "$basename $filename"
  mongoimport --db meteor --collection $basename --type json --file $f --drop -h 127.0.0.1:3001
done

现在,在安装Sierra之后,该脚本仍然可以运行JSON文件并可以运行,但是在导入中的随机位置,我得到以下信息:



再加上一些额外的输出...
我整天都在搜索,发现此错误在Sierra中不是新问题,与Go语言有关。不支持1.4版本或不支持Sierra。
我已经安装了Go 1.7并对其进行了测试,但无济于事。 mongoimport期间在随机位置出现相同错误。
任何帮助,将不胜感激!!

最佳答案

在清理数据并在macOS Sierra 10.12.6上使用新的mongo版本3.7.4再次运行“mongoimport”之后,我解决了类似的问题。

解决问题之前:

我使用的是mongo版本3.0.7(使用macOS Sierra 10.12.6)。今天,当我尝试导入大型JSON文件时,我已经观察到类似的问题。这是示例命令和错误:

./mongoimport --host localhost --port 27017 --db mydb --collection access --type json  --file /Users/data.json

2017-08-31T08:08:29.376+0530    connected to: localhost:27017
failed MSpanList_Insert 0x1341998 0x2a98efb0db8fa 0x0
fatal error: MSpanList_Insert

runtime stack:
runtime.MSpanList_Insert(0x433940, 0x1341998)
    /usr/local/go/src/runtime/mheap.c:692 +0x8f
runtime.MHeap_Alloc(0x433660, 0x1, 0x10000000009, 0xd9e9)
    /usr/local/go/src/runtime/mheap.c:240 +0x66
runtime.MCentral_CacheSpan(0x43a9b8, 0xc20c2e9c88)
    /usr/local/go/src/runtime/mcentral.c:85 +0x167
runtime.MCache_Refill(0x600960, 0x9, 0x8013417f8)
    /usr/local/go/src/runtime/mcache.c:90 +0xa0

goroutine 20 [running]:
runtime.switchtoM()
    /usr/local/go/src/runtime/asm_amd64.s:198 fp=0xc20c2e9368 sp=0xc20c2e9360
runtime.mallocgc(0x80, 0x0, 0x3, 0xc208531718)
    /usr/local/go/src/runtime/malloc.go:178 +0x849 fp=0xc20c2e9418 sp=0xc20c2e9368
runtime.rawmem(0x80, 0x80)
    /usr/local/go/src/runtime/malloc.go:371 +0x39 fp=0xc20c2e9440 sp=0xc20c2e9418

./mongoimport --version
mongoimport version: 3.0.7
git version: 134c548992e8248c7a7c53777a652cbb2490ab6c

解决方法:
我在/data/db/*下删除了mongo数据。根据您的配置,这将是其他路径。
sudo rm -rf /data/db/*

然后我从https://www.mongodb.com/dr/fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.4.7.tgz/download下载并安装了新的mongo版本3.7.4
drwxr-xr-x   8 root  root  272 Aug 31 07:38 mongodb-osx-x86_64-3.0.7
drwxr-xr-x   7 root  root  238 Aug 31 07:39 mongodb-osx-x86_64-3.4.7
lrwxr-xr-x   1 root  root   24 Aug 31 07:39 mongo -> mongodb-osx-x86_64-3.4.7

检查mongoimport versoin
./mongoimport  --version
mongoimport version: r3.4.7
git version: cf38c1b8a0a8dca4a11737581beafef4fe120bcd
Go version: go1.7
   os: darwin
   arch: amd64
   compiler: gc
OpenSSL version: OpenSSL 0.9.8zh 14 Jan 2016

我可以使用“mongoimport” 3.4.7成功导入大文件(以GB为单位)。

注意:如果由于某种原因无法像我一样清理数据。您可以尝试单独安装新的mongo,然后尝试使用新版本的“mongoimport”。

清理数据后,我也尝试使用旧版本的“mongoimport”,但没有用。使用最新的“mongoimport”有助于解决我的问题。

希望能帮助到你。

关于mongodb - mongoimport在Mac Sierra 10.12.2上引发随机MSpanList_Insert错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41644489/

10-15 20:30