Versión de phpBB: 2.0.
Tipo de phpBB: phpBB estandar, (tambien llamado Vanilla) phpBB2 o phpBB3
MODs Instalados: No
Tu conocimiento: Principiante
¿Qué recuerdas haber hecho en el foro antes de aparecer este error?
Nada en especial.
¿Qué has realizado para intentar resolver el problema?
Cambiar la codificación.
Descripción y Mensaje
Hola, ¿qué tal?
Mi problema es el siguiente: acabamos de migrar nuestro foro a otra ubicación. Al mover una tabla grande como la que contiene los posts, importando el archivo sql que la contiene por ssh, en los datos de cada campo, siempre que aparece un acento o una ñ, el texto se corta. En otras ocasiones, cuando aparecen esos símbolos, se traducen en la base de datos como símbolos extraños.
He pensado que tal vez es problema de la codificación de la base de datos, la tabla o los campos de la tabla, pero están todos en utf8, por lo que no entiendo a qué se deben estos errores ni se me ocurre como solucionarlos.
Si necesitáis más datos, preguntad lo que sea.
Saludos!
Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..
Gracias.
La Administración de phpBB España.
Problema con símbolos raros.
Re: Problema con símbolos raros.
Hola... suelo revisar los foros para tratar y ahondar en este problema, porque algo parecido nos pasó a nosotros hace un tiempo, así que espero poder ayudarte, creo que sí.
Como te digo, hicimos una migración desde un servidor Windows a un servidor Fedora Core Linux. La codificación de las tablas en Windows es ANSI, mientras que la codificación de las tablas en Linux es UNICODE.
Eso era el primer problema, ya que la base de datos del servidor podría no interpretar correctamente la codificación de la tabla: mientras que la base (Linux) estaba en UTF8, le estábamos metiendo una tabla ANSI.
Sin embargo, todo pasó y teníamos las tablas correctamente migradas. No obstante, más adelante hicimos copias de seguridad de las tablas y se estropearon los caracteres de la tabla phpbb_posts, convirtiendo los símbolos Á ñ ü y otros que estamos acostumbrados a ver. Ya sabéis el tipo de símbolos que la base de datos mete para interpretar dichos caracteres.
Así pues, tenía una tabla, phpbb_posts, de más de 100 Mb, llena de caracteres erróneos. Lo que hicimos fue copiar la tabla a local, editarla con EditPlus (un editor capaz de abrir archivos gigantes) y utilizar la función Replace para reemplazar los símbolos raros por eñes, á, ó, ü, etc. Primero nos hicimos una tabla con los caracteres que fallaban y luego los fuimos reemplazando, con reemplazamiento automático.
Cada reemplaza no llevaba más de dos-tres minutos.
Una vez toda la tabla estaba totalmente corregida y no quedaba un sólo símbolo extraño, procedimos a insertar la tabla en PHPBB de nuevo. Y aquí es cuando llega el problema real: phpmyadmin sólo admite ejecuciones más bien pequeñas, o archivos que tengamos en loca de no más de 2,048 Mb.
Por eso, subimos la tabla al FTP del servidor y, desde allí y a través de SSH le dimos la opción de mysql -h -u indicando la base de datos y la ruta del archivo y, de esta forma, incrustar la tabla, corregida, en la base de datos.
No había problema en subirla, pero nos encontrábamos el problema de que todos los caracteres de la tabla volvían a ser erróneos. Aún estando corregida, volvían esos símbolos extraños.
Borramos con delete from phpbb_posts todos los registros de la tabla subida en la base de datos. Abrimos la tabla phpbb_posts local, la que tenía caracteres correctos y, obviando la cabecera que tenía la instrucción de creación de tabla, fuimos hasta el primer INSERT INTO. Copiamos una de esas filas (con INSERT INTO) que no es más que una fila, un post, y lo pegamos en la ventana de ejecución, en la pestaña SQL de phpmyadmin habiendo seleccionado previamente la tabla phpbb_posts, ya vacía.. Pulsamos GO y la inserción del post fue correcta. Fuimos, de hecho, al foro y todos los temas, foros, usuarios, etc, estaba creado pero todo estaba "hueco", vacío, por haberle eliminado los post. Buscamos el único post que habíamos subido y allí estaba, sin problemas de símbolos.
Puesto que meter miles de INSERT INTO, uno por uno, en la ventana de ejecución, era una movida, hicimos un paquete de muchas filas con la instrucción INSERT INTO, metiendo unos 1.000 rows (filas, posts). Pulsamos en browse para buscar el fichero de texto con las mil instrucciones en local, pulsamos go... y llegó el problema: volvían los símbolos extraños.
Fue entonces cuando nos dimos cuenta de que a través de archivo, ya sea en nuestro ordenador local o a través de SSH leyendo del FTP del servidor, cualquier cosa que fuera leer a distancia un archivo con las instrucciones daba problemas con los símbolos.
Lo que hicimos, por tanto, fue crear archivos de texto, cada uno con la instrucción INSERT INTO y unos 2 Mb de datos en cada uno, conteniendo paquetes de rows. Lo calculamos a ojo, para que todos tuvieran el mismo tamaño.
Una vez tuvimos todos los paquetes de 2 Mb cada uno, fuimos subiendo uno por uno, pero no a través de búsqueda de archivo, sino copiando su contenido, pegándolo en la ventana de ejecución SQL y ejecutando. De esta forma fuimos acumulando los post de la tabla, sin errores en los símbolos.
Es una solución algo pesada, pero es la más segura para recuperar una tabla dañada, ya que la corregimos en local y la subimos por trozos a través de la ventana de ejecución.
Saludos.
Como te digo, hicimos una migración desde un servidor Windows a un servidor Fedora Core Linux. La codificación de las tablas en Windows es ANSI, mientras que la codificación de las tablas en Linux es UNICODE.
Eso era el primer problema, ya que la base de datos del servidor podría no interpretar correctamente la codificación de la tabla: mientras que la base (Linux) estaba en UTF8, le estábamos metiendo una tabla ANSI.
Sin embargo, todo pasó y teníamos las tablas correctamente migradas. No obstante, más adelante hicimos copias de seguridad de las tablas y se estropearon los caracteres de la tabla phpbb_posts, convirtiendo los símbolos Á ñ ü y otros que estamos acostumbrados a ver. Ya sabéis el tipo de símbolos que la base de datos mete para interpretar dichos caracteres.
Así pues, tenía una tabla, phpbb_posts, de más de 100 Mb, llena de caracteres erróneos. Lo que hicimos fue copiar la tabla a local, editarla con EditPlus (un editor capaz de abrir archivos gigantes) y utilizar la función Replace para reemplazar los símbolos raros por eñes, á, ó, ü, etc. Primero nos hicimos una tabla con los caracteres que fallaban y luego los fuimos reemplazando, con reemplazamiento automático.
Cada reemplaza no llevaba más de dos-tres minutos.
Una vez toda la tabla estaba totalmente corregida y no quedaba un sólo símbolo extraño, procedimos a insertar la tabla en PHPBB de nuevo. Y aquí es cuando llega el problema real: phpmyadmin sólo admite ejecuciones más bien pequeñas, o archivos que tengamos en loca de no más de 2,048 Mb.
Por eso, subimos la tabla al FTP del servidor y, desde allí y a través de SSH le dimos la opción de mysql -h -u indicando la base de datos y la ruta del archivo y, de esta forma, incrustar la tabla, corregida, en la base de datos.
No había problema en subirla, pero nos encontrábamos el problema de que todos los caracteres de la tabla volvían a ser erróneos. Aún estando corregida, volvían esos símbolos extraños.
Borramos con delete from phpbb_posts todos los registros de la tabla subida en la base de datos. Abrimos la tabla phpbb_posts local, la que tenía caracteres correctos y, obviando la cabecera que tenía la instrucción de creación de tabla, fuimos hasta el primer INSERT INTO. Copiamos una de esas filas (con INSERT INTO) que no es más que una fila, un post, y lo pegamos en la ventana de ejecución, en la pestaña SQL de phpmyadmin habiendo seleccionado previamente la tabla phpbb_posts, ya vacía.. Pulsamos GO y la inserción del post fue correcta. Fuimos, de hecho, al foro y todos los temas, foros, usuarios, etc, estaba creado pero todo estaba "hueco", vacío, por haberle eliminado los post. Buscamos el único post que habíamos subido y allí estaba, sin problemas de símbolos.
Puesto que meter miles de INSERT INTO, uno por uno, en la ventana de ejecución, era una movida, hicimos un paquete de muchas filas con la instrucción INSERT INTO, metiendo unos 1.000 rows (filas, posts). Pulsamos en browse para buscar el fichero de texto con las mil instrucciones en local, pulsamos go... y llegó el problema: volvían los símbolos extraños.
Fue entonces cuando nos dimos cuenta de que a través de archivo, ya sea en nuestro ordenador local o a través de SSH leyendo del FTP del servidor, cualquier cosa que fuera leer a distancia un archivo con las instrucciones daba problemas con los símbolos.
Lo que hicimos, por tanto, fue crear archivos de texto, cada uno con la instrucción INSERT INTO y unos 2 Mb de datos en cada uno, conteniendo paquetes de rows. Lo calculamos a ojo, para que todos tuvieran el mismo tamaño.
Una vez tuvimos todos los paquetes de 2 Mb cada uno, fuimos subiendo uno por uno, pero no a través de búsqueda de archivo, sino copiando su contenido, pegándolo en la ventana de ejecución SQL y ejecutando. De esta forma fuimos acumulando los post de la tabla, sin errores en los símbolos.
Es una solución algo pesada, pero es la más segura para recuperar una tabla dañada, ya que la corregimos en local y la subimos por trozos a través de la ventana de ejecución.
Saludos.
Re: Problema con símbolos raros.
Algo que he seguido viendo: los caracteres que hay que corregir cuando ocurre algo de esto.
Los principales son estos. Luego los hay algo más complejos (como diéresis y tal), pero si corregimos estos, la base de datos queda perfectamente legible:
ñ - ñ
ó - ó
á - á
¿ - ¿
é - é
í - í
Ñ - Ñ
º - º
Ó - Ó
É - É
ú - ú
íš - Ú
Los principales son estos. Luego los hay algo más complejos (como diéresis y tal), pero si corregimos estos, la base de datos queda perfectamente legible:
ñ - ñ
ó - ó
á - á
¿ - ¿
é - é
í - í
Ñ - Ñ
º - º
Ó - Ó
É - É
ú - ú
íš - Ú