2011-06-07 6 views
8

Si agrego caracteres que no son ASCII a la base de datos MongoDB, todos los db.find() fallan y dicen "carácter no detectado como ASCII".MongoDB no comprende UTF-8

Es problema de SpiderMonkey, tengo que reconstruirlo con soporte UTF-8. He tratado de hacerlo como en http://www.mongodb.org/display/DOCS/Building+Spider+Monkey

pero no funciona (SpiderMonkey no está instalado después de haber completado todos los pasos).

Tengo Ubuntu 11.04. ¿Alguien tiene instrucciones de cómo hacerlo funcionar there?

Instrucciones de trabajo sobre cómo hacer el trabajo MongoDB con Google V8 también puede ayudar.

+0

¿Este problema ocurre solo en el caparazón o en otro lugar también? (* i.e .: de uno de los controladores *) –

Respuesta

14

Estoy usando MongoDB en Ubuntu Server 11.04, lo instalé después de hacer la instalación del SO nuevo usando esta instrucción: http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages Todo funciona bien de la caja. ¿Es crítico para ti construir MongoDB desde cero?

+0

¡Salvaste el día! – luchaninov

+0

¡Me salvó el día también! –

+2

salvó el día, la noche, la semana, el fin de semana ... – Leonel

5

Usando los paquetes 10gen-publicada funciona bien, pero si realmente quiere compilar SpiderMonkey de la fuente con UFT-8:

curl -O ftp://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz 
tar xvzf js185-1.0.0.tar.gz 
cd js-1.8.5/js/src 
export CFLAGS="-DJS_C_STRINGS_ARE_UTF8" 
export CXXFLAGS="-DJS_C_STRINGS_ARE_UTF8" 

Y a continuación, siga las instrucciones de https://developer.mozilla.org/En/SpiderMonkey/Build_Documentation

autoconf-2.13 
./configure 
make 
make install 
cp js /usr/local/bin/ 

Esto se instalará en/usr/local/lib, sin embargo, el paquete mongodb lo busca en/usr/lib (donde está instalado el paquete spidermonkey). Así, ligamos todos los archivos instalados en/usr/local/lib/usr/lib

ln -s /usr/local/lib/libmozjs185.so /usr/lib/libmozjs185.so 
ln -s /usr/local/lib/libmozjs185.so.1.0 /usr/lib/libmozjs185.so.1.0 
ln -s /usr/local/lib/libmozjs185.so.1.0.0 /usr/lib/libmozjs185.so.1.0.0 
ln -s /usr/local/lib/libmozjs185-1.0.a /usr/lib/libmozjs185-1.0.a 

Por supuesto, usted podría moverlos a/usr/lib en lugar de enlaces simbólicos, pero quería mantener el UTF habilitado libs lejos de la ubicación predeterminada, para evitar conflictos con el paquete predeterminado spidermonkey. Sin el paquete libmozjs instalado, apt se queja de que las dependencias de mongodb no están satisfechas, así que lo dejé instalado.

Tenga en cuenta que si el paquete spidermonkey se actualiza, puede sobrescribir los enlaces simbólicos a nuestras nuevas librerías (o las librerías si las ha movido a/usr/local/lib). La solución ideal sería construir su propio paquete para resolver problemas de dependencia para siempre.