# 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.
Но когда я пытаюсь запросить запись с символом utf8 из клиента командной строки mongo, я получаю:
> 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]
Любые идеи или предложения приветствуются
Версия mongo 1.6.4 была установлена системой управления пакетами, которая включает сценарии mongo init.
Решение, которое я придумал, заключалось в том, чтобы загрузить новейшие двоичные файлы Mongo (2.0.3) из http://www.mongodb.org/downloads. Потом заменил все бинарники из rpm /usr/bin
с теми, которые я скачал.
Теперь все работает отлично!
Была такая же проблема. MongoDB версия оболочки: 1.8.2 на Ubuntu (EC2)
> db.tweets.find ();
ошибка: обнаружен не ascii-символ
Проверил, какую версию MongoDB я использовал, выполнив команду:
$ mongod --version
версия базы данных v1.8.2, pdfile версия 4.5 - среда, 24 октября, 15:43:13 версия git: nogitversion
Подтвердить если mongo в настоящее время работает:
$ ps -глухой | grep монгод
mongodb 15408 1 0 июня 2006 г.? 13:50:00 / usr / bin / mongod --config /etc/mongodb.conf
Чтобы Завершение работы MongoDB
$ ./mongo
> используйте администратора
> 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
Последующий НОВАЯ будут установлены пакеты: mongodb-10gen
Если вы получите ошибку, пытаться:
$ apt-get autoremove
как только у вас будет новая версия MongoDB, проблема с символом "non ascii" должна исчезнуть.
(p.s. Я знаю, что этот вопрос относится к RHEL но люди бегут другие версии Linux столкнется с этой проблемой, поэтому я подумал, что ответ Ubuntu / Debian актуален. Не стесняйтесь удалять
Взгляни на:
http://www.mongodb.org/display/DOCS/Building+Spider+Monkey#BuildingSpiderMonkey-Build
«SpiderMonkey не использует UTF-8 по умолчанию, поэтому мы включаем его перед сборкой».
Итак, вам нужно перестроить SpiderMonkey.