> 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 был установлен через менеджера пакетов
Просто была та же проблема. Версия оболочки MongoDB : 1.8.2 на Ubuntu (EC2)
> db.tweets.find();
ошибка: обнаружен символ не ascii
Консенсус заключается в том, что обновление до последней версии MongoDB решит проблему.
Проверьте, в какой версии MongoDB я запускал команду:
$ mongod --version
версия db v1.8.2, версия pdfile 4.5 - ср. 24 октября 15:43:13 версия git: nogitversion
Подтвердите, выполняется ли в настоящее время mongo:
$ ps -deaf | grep mongod
mongodb 15408 1 0 Jun06? 13:50:00/usr/bin/mongod --config/etc/mongodb.conf
$./mongo
> использовать admin
> db.shutdownServer()
сервер должен быть отключен...
Затем обновлены следующие инструкции: Как установить MongoDB на 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, проблема с символом "non ascii" должна исчезнуть. :-)
Основываясь на некоторых подобных отчетах, которые я видел (на http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages и http://groups.google.com/group/mongodb-user/browse_thread/thread/e8b858078101933d) кажется, что проблема может заключаться в том, что ваша версия mongo/spidermonkey не имеет поддержки UTF8. Возможно, попробуйте новую установку или сборку с нуля и посмотрите, исправляет ли она это?
Это то, что я сделал, чтобы решить эту проблему. Я выполнил команду:
git clone https://github.com/mongodb/mongo.git
cd mongo
scons mongoshell
Это создаст только оболочку монго, без необходимости полной перестройки.