MongoDB «ошибка: обнаружен не ascii символ» в Node.js - PullRequest
1 голос
/ 16 июля 2011

Я пытаюсь проанализировать очень большой кусок данных в новой базе данных MongoDB, и когда я запускаю задание, я получаю сообщение об ошибке, когда выполняю db.myCollection.find().
Ошибка error: non ascii character detected.

Я использую Node.js и Mongoose для заполнения базы данных. Единственные символы, которые я видел, могут вызывать проблемы, это ', , и -, но я сделал .rereplace для всех из них. Я попытался избежать их (\), и я попытался просто удалить их полностью, и, похоже, ничего не работает.

Моя самая большая проблема в том, что я не получаю никаких ошибок при сохранении объектов, я просто получаю это сообщение, когда пытаюсь просмотреть коллекцию.

Есть ли какая-либо информация о дезинфекции ввода MongoDB?

Ответы [ 3 ]

1 голос
/ 26 октября 2012

Просто была такая же проблема. MongoDB версия: 1.8.2 + Mongoose 3.3.1 (NodeJS v0.8.14 ) на Ubuntu (EC2)

> db.tweets.find ();

ошибка: обнаружен не ascii символ

Консенсус заключается в том, что обновление до последней версии MongoDB ( 2.2 ) решит проблему.

Проверено, какую версию MongoDB я использовал, введя команду:

$ mongod --version

дБ версия v1.8.2 , pdfile версия 4.5 - Ср 24 октября 15:43:13 git версия: nogitversion

Подтвердите , если монго в данный момент работает:

$ ps -deaf | grep mongod

mongodb 15408 1 0 Jun06? 13:50:00 / usr / bin / mongod --config /etc/mongodb.conf

К Выключение MongoDB

$ ./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, проблема с символами «не ascii» должна исчезнуть. : -)

1 голос
/ 16 июля 2011

Если это строковые данные, возможно, перед вставкой убедитесь, что они закодированы как UTF8. Большинство водителей должны это проверить, но это могло быть упущено в драйвере Mongoose. Все строки в MongoDB хранятся как UTF8, как определено спецификацией BSON.

0 голосов
/ 10 февраля 2012

я понял, когда случайно сделал это

BasicDBObject bdb;bdb.put ("myfield", новый ObjectId (String.valueOf (objectId)));

, затем сохраненный bdb в mongo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...