Problemas con caracteres actualizando de 3.1.1-4 a 3.3.0-6

Hola,

OJS 3.1.1-4
Multijournal
Multilanguage

Estoy intentando actualizar desde 3.1.1-4 a 3.3.0-6.

En un primer intento obtuvimos error por valores nulos en los locales y valores de string incorrectos en los Subject de las plantillas de correo.

Intentamos ir por la versión intermedia 3.2.1-1, pero obtuvimos el mismo error.

Conseguimos saltar este error realizando la siguiente consulta a la db:

update user_settings set locale = ‘es_ES’ where locale like ‘’ or locale is null;
update submissions set locale = ‘es_ES’ where locale like ‘’ or locale is null;
update author_settings set locale = ‘es_ES’ where locale like ‘’ or locale is null;

Pero no hemos conseguido puentear el error siguiente, que se refiere al campo Subject de las mail templates.

Obtenemos el siguiente error:

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xD9\x86\xD8\xB4\xD8\xA7...' for column 'subject' at row 1 in /var/www/html/revistas/lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:115
Stack trace:
#0 /var/www/html/revistas/lib/pkp/lib/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(115): PDOStatement->execute(NULL)
#1 /var/www/html/revistas/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(489): Doctrine\DBAL\Driver\PDOStatement->execute()
#2 /var/www/html/revistas/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(664): Illuminate\Database\Connection->Illuminate\Database\{closure}('INSERT INTO ema...', Array)
#3 /var/www/html/revistas/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php(631): Illuminate\Database\Connection->runQueryCallback('INSERT INTO ema...', Array, Object(Closure))
#4 /var/www/html/revistas/lib/pkp/lib/vendor/laravel/framework/src/Illum in /var/www/html/revistas/lib/pkp/lib/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 671

¿Alguna idea o sugerencia al respecto?

Gracias de antemano.

Saludos,
Juan

Hola Juan,

Seguro que ya lo has hecho, pero debo empezar recordando que es IMPRESCINDIBLE tener un backup al día cuando se hace una actualización en “minor” (o sea de 3.1 a 3.3).

El camino que deberías seguir para hacer un upgrade a 3.3 es (como ya has intentado) pasando primero por la última 3.2. OJS 3.3 asume que partes de una 3.2 y si no es así, el resultado será siempre incierto.

Dicho eso, si hay problemas de upgrade, habitualmente eso es debido a que la BD no está del todo fina y hay que recurrir a “artesanías”. :slight_smile:

Para las plantillas de correo, mi sugerencia es que borres el contenido de esas tablas (truncate) y cuando termine el upgrade, las substituyas con el contenido de las mismas de una versión OJS 3.3 limpia.

Para las tablas de usuario, autor y submission… el tema es más complicado pq. ojs NO te va a aceptar duplicados y tampoco te va a aceptar localización en campos que no lo admiten. Si las consultas update que habéis hecho os funcionan adelante… pero creo que forzar “es_ES” en todos los campos no tendría que funcionar y habría que ser más quirurgico.

Aquí tienes un post de Alec dónde explica que campos son localizados y que campos no:

Por cierto, se acaba de publicar la versión 3.3.0-7… así que yo de ti aprovechaba y hacía el upgrade a la última. :wink:

Un saludo,
m.

Hola Marc,
Gracias por tu respuesta.
Ok. Hacemos un intento.
Saludos,
Juan

Hola buen día,

Disculpa como resolvieron el error?
puede compartirme su solución,
por favor

Saludos!
José Cándido

Hola, por aquí atento a la solución que hayan encontrado en relación a:

Incorrect string value: '\xD9\x86\xD8\xB4\xD8\xA7...'

Por lo pronto voy a borrar el contenido de la tabla de correo y ya veré cómo lo resuelvo luego. Estoy trabajando sobre un servidor de prueba.

Saludos.

Buenas, todavía no probé borrar el contenido de la tabla, pero encontré esta solución que aplicó otro usuario y que es una solución que me falta probar. La diferencia con otras soluciones que apliqué es que convierte el contenido de la DB a UTF8.

Les dejo el link

Lo voy a estar probando en breves. Saludos.

Justo estaba por comentar lo mismo que @tecnicouncoma … Según vi en otros posts donde reportan problemas similares, es necesario comprobar que “character set” y “collation” tanto de la base de datos como de cada tabla individual esté configurado como utf8 y no, por ejemplo, latin1.

Además, también es necesario configurar el Engine de todas las tablas como InnoDB para que la actualización funcione.

Bueno, lo probé y pude actualizar de la versión 2.4.8-4 a 3.0.2 sin la falla

Incorrect string value

Tuve que crear el dump de la siguiente manera para que conservara los caracteres propios del idioma para que me aparezcan tíldes y demás:

mysqldump -uusername -ppassword -c -e --default-character-set=latin1 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql

Saludos,

2 Likes