检测到mongodb非ascii字符

时间:2011-12-14 06:20:52

标签: python mongodb

> db.user.find()
terminate called after throwing an instance of 'mongo::UserException'
  what():  non ascii character detected
Wed Dec 14 13:29:38 mongo got signal 6 (Aborted), stack trace: 

Wed Dec 14 13:29:38 0x809d07d 0x8095cc3 0xa14400 0xa14416 0xa3fe71 0xa4334e 0x1be0b5 0x1bbfa5 0x1bbfe2 0x1bc14e 0x80ecd53 0x8117479 0x810c718 0x3c36f0 
 /usr/lib/mongodb/mongo(_ZN5mongo15printStackTraceERSo+0x2d) [0x809d07d]
 /usr/lib/mongodb/mongo(_Z12quitAbruptlyi+0x333) [0x8095cc3]
 [0xa14400]
 [0xa14416]
 /lib/i386-linux-gnu/libc.so.6(gsignal+0x51) [0xa3fe71]
 /lib/i386-linux-gnu/libc.so.6(abort+0x17e) [0xa4334e]
 /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x155) [0x1be0b5]
 /usr/lib/i386-linux-gnu/libstdc++.so.6(+0xabfa5) [0x1bbfa5]
 /usr/lib/i386-linux-gnu/libstdc++.so.6(+0xabfe2) [0x1bbfe2]
 /usr/lib/i386-linux-gnu/libstdc++.so.6(+0xac14e) [0x1bc14e]
 /usr/lib/mongodb/mongo(_ZN5mongo9uassertedEiPKc+0x183) [0x80ecd53]
 /usr/lib/mongodb/mongo(_ZN5mongo9Convertor8toStringEP8JSString+0x149) [0x8117479]
 /usr/lib/mongodb/mongo(_ZN5mongo12native_printEP9JSContextjPy+0x98) [0x810c718]
 /usr/lib/xulrunner-2.0/libmozjs.so(+0xac6f0) [0x3c36f0]

我插入mongodb的数据是用utf-8编码的,但是当我在控制台中使用db.user.find()时,我得到了上面的错误。

操作系统是Ubuntu 11.04 Mongodb是通过包管理器安装的

3 个答案:

答案 0 :(得分:2)

刚刚遇到同样的问题。 Ubuntu (EC2)上的MongoDB shell版本:1.8.2

  

> db.tweets.find();

     

错误:检测到非ascii字符

同意是升级到最新版本的MongoDB将解决这个问题。

通过发出命令检查我正在运行的MongoDB版本:

  

$ mongod --version

     

db version v1.8.2 ,pdfile版本4.5 -   10月24日星期三15:43:13 git版本:nogitversion

确认如果mongo当前正在运行:

  

$ ps -deaf | grep mongod

     

mongodb 15408 1月6日06? 13:50:00 / usr / bin / mongod --config /etc/mongodb.conf

Shutdown MongoDB

  

$ ./mongo

     

>使用管理员

     

> db.shutdownServer()

     

服务器应该关闭......

然后按照以下说明进行升级:How to Install MongoDB on Ubuntu

将10 Gen(MongoDB的创建者)公钥添加到apt-get,以便您信任他们的包:

  

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

     

$ echo“deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen”>> /etc/apt/sources.list.d/10gen.list

更新您的包裹:

  

$ sudo apt-get update

安装10gen的MongoDB Debian / Ubuntu软件包:

  

$ sudo apt-get install mongodb-10gen

     

以下包将删除:     的 mongodb的

     

将安装以下 NEW 包:     的的mongodb-10gen的

如果您收到错误,请尝试:

  

$ apt-get autoremove

确认 mongodb 用户/组有权写入数据目录:

  

$ sudo chown -R mongodb:mongodb / var / lib / mongodb /.

使用以下命令重启MongoDB:

  

$ mongod --fork --dbpath / var / lib / mongodb / --smallfiles --logpath /var/log/mongodb.log --logappend

一旦你有新版本的MongoDB,“非ascii”字符问题就应该消失了。 : - )

答案 1 :(得分:1)

基于我见过的一些类似报告(http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packageshttp://groups.google.com/group/mongodb-user/browse_thread/thread/e8b858078101933d) 似乎问题可能是您的mongo / spidermonkey版本缺乏UTF8支持。也许尝试全新安装或从头开始构建,看看是否可以修复它?

答案 2 :(得分:0)

这就是我为解决这个问题所做的。我跑了命令:

git clone https://github.com/mongodb/mongo.git
cd mongo
scons mongoshell

这将只构建mongo shell,而无需进行完整的重建。