2011-07-16 7 views
1

J'essaye d'analyser une très grande partie de données dans une nouvelle base de données MongoDB et quand je cours le travail je continue à recevoir une erreur quand je fais db.myCollection.find().
L'erreur est error: non ascii character detected. J'utilise Node.js et Mongoose pour remplir la base de données. Les seuls caractères que j'ai vus qui pourraient causer des problèmes sont ', , et - mais j'ai fait un .replace sur chacun d'eux. J'ai essayé de leur échapper (\) et j'ai essayé juste de les enlever entièrement et rien ne semble fonctionner.MongoDB 'erreur: caractère non ascii détecté' sur Node.js

Mon plus gros problème est que je ne reçois aucune erreur lorsque je sauvegarde les objets, je reçois juste ce message lorsque j'essaie de voir la collection.

Existe-t-il des informations sur l'entrée MongoDB d'assainissement?

+0

A découvert le problème. Une des cordes avait ce caractère: 'Æ' (comme dans le mot" Aether "), donc je l'ai juste remplacé par" AE "et tout se passe bien maintenant. –

Répondre

1

S'il s'agit de données de chaîne, assurez-vous qu'il est codé en UTF8 avant de l'insérer. La plupart des conducteurs devraient vérifier ceci, mais il pourrait avoir été négligé dans le conducteur de Mongoose. Toutes les chaînes dans MongoDB sont stockées en tant que UTF8, comme défini par la spécification BSON.

+0

Appréciez le conseil, mais je n'ai aucune idée de comment faire cela. :) D'autres chaînes que j'ai enregistrées sur MongoDB avec Mongoose ont fonctionné correctement, donc je ne pense pas que ce soit le problème, mais je vais m'y pencher. –

0

je l'ai eu quand je l'ai fait par hasard cette

BasicDBObject BdB; bdb.put ("myfield", nouvel ObjectId (String.valueOf (objectId)));

puis enregistré bdb à mongo.

1

Juste eu le même problème. Version MongoDB : 1.8.2 + mangouste 3.3.1 (NodeJS v0.8.14) sur Ubuntu (EC2)

> db.tweets.find();

error:non ascii character detected

Le consensus est que la mise à niveau à la dernière version de MongoDB (2.2) résoudra le problème.

Contrôlé version de MongoDB je courais en exécutant la commande:

$ mongod --version

db version v1.8.2, pdfile version 4.5 - Wed Oct 24 15:43:13 git version: nogitversion

Confirmer si mongo est en cours d'exécution:

$ ps -deaf | grep mongod

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

Pour Shutdown MongoDB

$ ./mongo

> use admin

> db.shutdownServer()

server should be down...

Ensuite, mis à niveau suivant ces instructions: How to Install MongoDB on Ubuntu

Ajouter les 10 Gen (créateurs de MongoDB) clé publique à apt-get si vous faites confiance à leur forfait:

$ 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

Mettez à jour vos paquets:

$ sudo apt-get update

installer MongoDB de 10gen Paquet Debian/Ubuntu:

$ sudo apt-get install mongodb-10gen

The following packages will be REMOVED: mongodb

The following NEW packages will be installed: mongodb-10gen

I f vous obtenez une erreur, essayez:

$ apt-get autoremove

Vérifiez que l'utilisateur/groupe de MongoDB a la permission d'écrire dans le répertoire de données:

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

Redémarrez MongoDB avec la commande:

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

Une fois que vous avez la nouvelle version de MongoDB, le problème de caractère "non ascii" devrait disparaître. :-)