2011-07-16 15 views
1

非常に大量のデータを新しいMongoDBデータベースに解析しようとしていますが、私がジョブを実行するときにエラーが発生する場合は、db.myCollection.find()
エラーはerror: non ascii character detectedです。Node.jsでMongoDB 'エラー:非アスキー文字が検出されました'

私はNode.jsとMongooseを使用してデータベースにデータを入力しています。私が問題を引き起こしている可能性があるのは、',-ですが、私はそれらのすべてに対して.replaceを行っています。私はそれらをエスケープしようとした(\)と私はそれらを完全に削除しようと何も動作しているようだ。

私の最大の問題は、オブジェクトを保存しているときにエラーが発生しないことです。コレクションを表示しようとするとそのメッセージが表示されます。

MongoDB入力のサニタイズに関する情報はありますか?

+0

この問題を発見しました。文字列の1つにこの文字が含まれていました:「Æ」(「Aether」のように)私は「AE」に置き換えられました。 –

答えて

1

文字列データの場合は、挿入する前にUTF8としてエンコードされていることを確認してください。ほとんどのドライバーはこれをチェックすべきですが、それはMongooseドライバーで見落とされている可能性があります。 MongoDBのすべての文字列は、BSON仕様で定義されているように、UTF8として格納されます。

+0

アドバイスを気に入っていますが、どうすればいいか分かりません。 :) MongooseでMongoDBに保存したその他の文字列はうまくいきましたので、これは問題ではないと思いますが、私はそれを調べます。 –

0

私が誤ってこのことをしたときに手に入れました。

BasicDBObject bdb; bdb.put( "myfield"、新しいObjectId(String.valueOf(objectId)));

bdbをmongoに保存しました。

1

ちょうど同じ問題がありました。 MongoDBのバージョン:1.8.2 +マングースUbuntuの(EC2)上の3.3.1(NodeJS v0.8.14

> db.tweets.find();

error:non ascii character detected

コンセンサスのMongoDBの最新バージョンにアップグレードすることである(2.2)が問題を解決します。Mongoのが現在実行されている場合

$ mongod --version

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

確認

は、私は、コマンドを発行して走っていたのMongoDBのバージョンをチェック

$ ps -deaf | grep mongod

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

その後

$ ./mongo

> use admin

> db.shutdownServer()

server should be down...

Shutdown MongoDBへフォローアップされたこれらの命令:How to Install MongoDB on Ubuntu

は10世代(の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

The following packages will be REMOVED: mongodb

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

Iエラーを得るF、試してみてください。

$ 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を入手したら、「非アスキー」文字の問題はなくなるはずです。 :-)

関連する問題