# mongo
MongoDB shell version: 1.6.4
Fri Mar 16 11:55:46 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support
connecting to: test
Mongo Server 似乎可以很好地处理 utf8 字符,以及我的 php-mongo-client 驱动程序。
但是当我尝试从 mongo 命令行客户端查询具有 utf8 字符的记录时,我得到:
> db.Users.find({age:33});
error:non ascii character detected
Fri Mar 16 11:55:43 mongo got signal 11 (Segmentation fault), stack trace:
Fri Mar 16 11:55:43 0x440b50 0x3664c302d0 0x3f47e7b6e0 0x3f47e83bbd 0x3f47e254f3 0x3f47e25660 0x3f47e256ee 0x3f47e25792 0x3f47e2876e 0x4b031d 0x443b72 0x445476 0x3664c1d994 0x43fd39
mongo(_Z12quitAbruptlyi+0x3b0) [0x440b50]
/lib64/libc.so.6 [0x3664c302d0]
/usr/lib64/libjs.so.1 [0x3f47e7b6e0]
/usr/lib64/libjs.so.1(js_CompileTokenStream+0x3d) [0x3f47e83bbd]
/usr/lib64/libjs.so.1 [0x3f47e254f3]
/usr/lib64/libjs.so.1(JS_CompileUCScriptForPrincipals+0x60) [0x3f47e25660]
/usr/lib64/libjs.so.1(JS_EvaluateUCScriptForPrincipals+0x3e) [0x3f47e256ee]
/usr/lib64/libjs.so.1(JS_EvaluateUCScript+0x22) [0x3f47e25792]
/usr/lib64/libjs.so.1(JS_EvaluateScript+0x6e) [0x3f47e2876e]
mongo(_ZN5mongo7SMScope4execERKSsS2_bbbi+0xed) [0x4b031d]
mongo(_Z5_mainiPPc+0x14a2) [0x443b72]
mongo(main+0x26) [0x445476]
/lib64/libc.so.6(__libc_start_main+0xf4) [0x3664c1d994]
mongo(__gxx_personality_v0+0x269) [0x43fd39]
欢迎任何想法或建议
答案1
包管理系统安装了 mongo 版本 1.6.4,其中包括 mongo init 脚本。
我想到的解决方案是从http://www.mongodb.org/downloads/usr/bin
。然后我用下载的二进制文件替换了 rpm 中的所有二进制文件。
现在一切都运行正常!
答案2
刚刚遇到了同样的问题。MongoDBshell版本:1.8.2在Ubuntu(EC2)
> db.tweets.find();
错误:检测到非 ASCII 字符
通过发出以下命令检查我正在运行的 MongoDB 版本:
$ mongod——版本
数据库版本v1.8.2,pdfile 版本 4.5 - 星期三 十月 24 15:43:13 git 版本:nogitversion
确认如果 mongo 当前正在运行:
$ ps -deaf | grep蒙哥
mongodb 15408 1 0 6月6日?13:50:00 /usr/bin/mongod --config /etc/mongodb.conf
$./mongo
> 使用管理员
> db.shutdownServer()
服务器应该已关闭...
然后按照以下说明进行升级:如何在 Ubuntu 上安装 MongoDB
将第 10 代(MongoDB 的创建者)公钥添加到 apt-get,以便您信任他们的包:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
$ echo "debhttp://downloads-distro.mongodb.org/repo/ubuntu-upstartdist 10gen”>> /etc/apt/sources.list.d/10gen.list
更新你的软件包:
$ sudo apt-get 更新
安装 10gen 的 MongoDB Debian/Ubuntu 包:
$ sudo apt-get 安装 mongodb-10gen
以下套餐将已移除: mongodb
下列新的将安装以下软件包: mongodb-10gen
如果出现错误, 尝试:
$ apt-get 自动删除
一旦您拥有新版本的 MongoDB,“非 ascii”字符问题就应该消失。
(PS我知道这个问题涉及到红帽企业版但人们跑步其他版本Linux 会遇到这个问题,所以我认为 Ubuntu/Debian 的答案是相关的。请随意删除
答案3
看一眼:
http://www.mongodb.org/display/DOCS/Building+Spider+Monkey#BuildingSpiderMonkey-Build
“SpiderMonkey 默认不使用 UTF-8,因此我们在构建之前启用它。”
因此,您需要重建 SpiderMonkey。