Problema SQL con importación de la instancia - Migrando de 2.7 a 3.3

Buenas, estamos en el proceso de migrar los sistemas que tenemos desarrollados en Toba 2.7 a Toba 3.3.

Leyendo el repositorio y el foro seguí estos pasos sin problema:

Servidor Viejo

  1. Exporte la instancia con exportar_local
  2. Exporte los metadatos de los proyectos
  3. Copie la carpeta entera al Servidor Nuevo

Servidor Nuevo

  1. Descargue y descomprimi el template de toba 3.3
  2. Modifique el Composer-json y lo ejecute
    3 Configure las variables de entorno TOBA_INSTANCIA y TOBA_INSTALACION_DIR y realice la instalación.

Cuando ejecuto la importación de la instancia para migrar usuarios y perfiles de la instalación vieja a la nueva

toba instancia importar -d /carpeta/instalacion_vieja/toba_2_7/

Me devuelve lo siguiente:

PHP Deprecated:  Array and string offset access syntax with curly braces is deprecated in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/lib/toba_manejador_archivos.php on line 417
.PHP Notice:  Undefined offset: 2 in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/nucleo/lib/toba_error.php on line 126

 ERROR ejecutando SQL:
  [CODIGO]: 0
  [SQLSTATE]: db_HY000
  [MENSAJE]:
  [SQL EJECUTADA]:

PHP Notice:  Undefined offset: 2 in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/nucleo/lib/toba_error.php on line 126

Previamente me daba errores por el usuario toba repetido (ya que existe en ambas instancias) que corregí, y ahora este no se ni en que script esta tirando el error. Alguna sugerencia?

Hola Romina,

previo a esto realizaste la migracion del proyecto no?.. ya que de lo contrario los perfiles van a explotar al querer insertarse.

Me devuelve lo siguiente:
PHP Deprecated:  Array and string offset access syntax with curly braces is deprecated in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/lib/toba_manejador_archivos.php on line 417
.PHP Notice:  Undefined offset: 2 in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/nucleo/lib/toba_error.php on line 126

 ERROR ejecutando SQL:
  [CODIGO]: 0
  [SQLSTATE]: db_HY000
  [MENSAJE]:
  [SQL EJECUTADA]:

PHP Notice:  Undefined offset: 2 in /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/nucleo/lib/toba_error.php on line 126

Bien, aca hay dos cuestiones separadas:

  • Los notice/warnings/deprecateds que salen pueden estar relacionados a la version de PHP (que seria?) y/o de Toba, en particular por el primer msg noto que a lo sumo estas utilizando la version v3.3.14 de Toba (que esta lejos de la ultima).
    Podes revisar el composer.json del proyecto y fijarte si hay algun paquete que este impidiendo que se baje una version mas nueva o si quizas haya alguna limitacion mas abajo, ya sea con una extension etc, de lo contrario deberias estar ejecutando 3.3.26 cuyo codigo ya no genera ese msg.

  • Por otro lado, estas obteniendo un error de falta de conexion a la DB (segun SQLSTATE)… esto puede ser uno de 2 problemas:

    • Efectivamente no se conecta a la bd, puede ser que sin querer eliminaste la bd de la instancia nueva?
    • Hay un problema de permisos con el directorio de logs en la carpeta instalacion y PHP no puede escribir, por alguna cuestion ridicula se termina informando como un error de BD cuando son permisos del directorio… fijate que el grupo de tu user pueda escribir alli, normalmente es instalacion/logs_comandos
Previamente me daba errores por el usuario toba repetido (ya que existe en ambas instancias) que corregí, y ahora este no se ni en que script esta tirando el error. Alguna sugerencia?

Luego de la importacion fallida por el usuario duplicado, reiniciaste el proceso? reintentaste desde donde estabas?

Saludos

Hola Richard,

previo a esto realizaste la migracion del proyecto no?... ya que de lo contrario los perfiles van a explotar al querer insertarse.

No lo había hecho antes, pero volví a realizar la instalación / migración con algunas de tus sugerencias y esto lo hice con los tres proyectos que tenemos previo a migrar la instancia sin problemas.

- Los notice/warnings/deprecateds que salen pueden estar relacionados a la version de PHP (que seria?) y/o de Toba, en particular por el primer msg noto que a lo sumo estas utilizando la version v3.3.14 de Toba (que esta lejos de la ultima). Podes revisar el composer.json del proyecto y fijarte si hay algun paquete que este impidiendo que se baje una version mas nueva o si quizas haya alguna limitacion mas abajo, ya sea con una extension etc, de lo contrario deberias estar ejecutando 3.3.26 cuyo codigo ya no genera ese msg.

Revise el composer y como no vi nada que bloquee la descarga, le puse la versión 3.3.26 directamente y descargo esa OK.

Luego de la importacion fallida por el usuario duplicado, reiniciaste el proceso? reintentaste desde donde estabas?

Si, reinicié el proceso.

- Por otro lado, estas obteniendo un error de falta de conexion a la DB (segun SQLSTATE)... esto puede ser uno de 2 problemas: * Efectivamente no se conecta a la bd, puede ser que sin querer eliminaste la bd de la instancia nueva? * Hay un problema de permisos con el directorio de logs en la carpeta instalacion y PHP no puede escribir, por alguna cuestion ridicula se termina informando como un error de BD cuando son permisos del directorio... fijate que el grupo de tu user pueda escribir alli, normalmente es [b]instalacion/logs_comandos[/b]

La base esta OK y el logs_comandos puede escribir, de hecho ahi encontré un poco mas de detalle despues de volver a ejecutar el proceso con tus sugerencias:


[DEBUG][toba] ************ ABRIR transaccion (toba_3_3@10.3.16.75) ****************
[DEBUG][toba] ************ Se cambia el chequeo de constraints (DEFERRED) ****************
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/global/usuarios.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__fichado/datos.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__fichado/usuarios.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__portal_empleado/datos.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__portal_empleado/usuarios.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__tehuelche/datos.sql. (1)
[DEBUG][toba] /home/rmansilla/toba_2_7/toba_2.7.9//instalacion/i__produccion/p__tehuelche/usuarios.sql. (1)
[ERROR][toba] SQLSTATE[HY000]: General error: trying to execute an empty query
[DEBUG][toba] ************ ABORTAR transaccion (toba_3_3@10.3.16.75) ****************
[ERROR][toba] toba_error_db:
ERROR ejecutando SQL:
 [CODIGO]: 0
 [SQLSTATE]: db_HY000
 [MENSAJE]:
 [SQL EJECUTADA]:

[TRAZA]

        toba_db->ejecutar
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/lib/db/toba_db.php, lInea 401

        toba_db->ejecutar_archivo
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/modelo/toba_modelo_instancia.php, lInea 1097

        toba_modelo_instancia->importar_informacion_instancia
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/comandos/comando_instancia.php, lInea 318

        comando_instancia->opcion__importar
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/comando.php, lInea 102

        comando->ejecutar_opcion
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/comando.php, lInea 90

        comando->procesar
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/consola.php, lInea 78

        consola->invocar_comando
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/consola.php, lInea 55

        consola->run
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/run.php, lInea 32

        require_once
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/bin/launcher.php, lInea 31
Parametros:
/var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/php/consola/run.php

        require_once
Archivo: /var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/bin/toba, lInea 1
Parametros:
/var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/bin/launcher.php

        include
Archivo: /var/siu/toba_nucleo_3.3/bin/toba, lInea 115
Parametros:
/var/siu/toba_nucleo_3.3/vendor/siu-toba/framework/bin/toba

Me fije y los archivos datos.sql y usuarios.sql existen tambien en /global, /p__toba_usuarios, /p__toba_editor y /p__toba_referencia.

Hola Romina,

En este caso buscaria algun archivo que tenga tamaño cero, si todos parecen estar OK… fijate que no exista ningun archivo oculto (de los que comienzan con un punto) que tenga la extension sql, en la linea indicada meramente se cicla por los archivos sql que existen en la carpeta (p__xxx )del proyecto en cuestion.

Saludos

Bueno, finalmente detecte el archivo del problema y quedo funcionando. Muchas gracias!