Hola, al actualizar FS me aparece un error relacionado con las claves foráneas en varias secciones como asientos, cuentas, facturas, presupuestos, etc. El error es:

Error al ejecutar la consulta 6: Cannot change column 'codejercicio': used in a foreign key constraint 'ca_pedidosprov_ejercicios'. La secuencia ocupa la posición 13
Error al comprobar la tabla pedidosprov

En el resto de secciones aparecen mensajes parecidos haciendo referencia a otras tablas.

¿Como soluciono el error?.

Gracias.
Saludos,
hace 3 meses   shawe   programador nivel 1

Te recomiendo seguir el consejo de debajo de tu notificación.

Consejo: Envía los errores desde FacturaScripts. Nos aportan información extra y tienen prioridad sobre el resto. Puedes enviarlos desde tu pantalla de FacturaScripts, en el menú superior derecho, botón (?) -> Informar...

hace 3 meses   josecristian94_103

Hola shawe,

gracias por contestar, he intentado lo anterior pero me aparece el error al enviar "Parece que ha algún problema con tu navegador y no carga el captcha.".

Saludos.
image

hace 3 meses   joenilson   partner

Hola, en la captura se nota que tienes un plugin no oficial, trata a desinstalarlo y probar la actualización, si estás detras de un firewall verifica que tengas acceso a los puertos de github.

Saludos

JN

hace 3 meses   josecristian94_103

Hola joenilson,

problema del plugin no creo que sea, ya que es un plugin propio que unicamente modifica las vistas (no modifica modelos, ni hace cambios en la bd), la actualización he probado a realizarla de forma manual (eliminando las carpetas base, controller, extras, model, raintpl y view y reemplazando el zip descargado de github) y a través del actualizador y tengo los mismos problemas. He clonado el entorno de produccion por lo que puedo hacer todas las pruebas necesarias sin comprometer nada.

Saludos.

hace 3 meses   josecristian94_103

He revisado, la consulta a traves del debug de facturascripts y el problema puede venir en que no puede modificar las reestricciones que tiene fscripts.
He probado a desactivar las reestricciones de claves foraneas y se soluciona pero no es una solucion correcta ya que la base de datos no tendria integridad.

¿Como puedo solucionarlo?
Mientras tanto seguiré investigando el problema.

Un saludo y Muchas gracias.
image

hace 3 meses   josecristian94_103

Creo que el problema puede venir en que al estar activada la "comrpobacion de claves ajenas" en fscripts cada vez que se carga un modelo se checkean o reescriben los campos y dado que a partir de la versión 5.6.7 de mysql se prohiben los cambios de claves foraneas se da el problema al aplicar las reestricciones salta el error.


image

hace 3 meses   NeoRazorX   admin

Si, los últimos cambios en MySQL son problemáticos.

Bueno, ahora que ya se han aplicado los cambios, vuelve a activar las claves ajenas.
Saludos.

hace 3 meses   josecristian94_103

Hola Carlos,

gracias por contestar, aunque funcione la primera y se activen las claves ajenas vez va a seguir mostrando ya que cada vez que se accede a un menu se reescribe la estructura de las tablas (usando el fichero xml del schema de la tabla) por lo que a partir de la version 5.6.7 de mysql habria que:

1º Bloquear las tablas (LOCK TABLES....)
2º Eliminar la reestriccion (DROP FOREIGN KEY....)
3º Modificar el campo (ALTER TABLE .... MODIFY ....)
4º Recrear la reestriccion (ALTER TABLE... ADD FOREIGN KEY CONSTRAINT .....)
5º Desbloquear las tablas (UNLOCK TABLES...)

Creo que esta seria la opcion correcta, ya que que desactivar las claves foraneas (SET foreign_key_checks = 0;) no me parece lo mas correcto ya que empezaremos a tener problemas de integridad en los datos.

hace 3 meses   NeoRazorX   admin

No, las tablas solamente se modifican cuando se tienen que modificar, no siempre. Desactiva las claves ajenas, limpia la caché, accede a unas cuantas páginas (para que se comprueben las tablas), vuelve a activar las claves ajenas y limpia la caché. Debería solucionar el problema.

Todo esto viene de un bug antiguo que no estaba modificando correctamente las tablas en MySQL, por eso ahora intenta hacer los cambios que en su momento no se hicieron por el bug.

El proceso de modificar las tablas se hace en una transacción para cada tabla, no es necesario bloquear nada. Y cuando digo desactivar las claves ajenas antes de activar los cambios, me refiero a esa transacción. El proceso no dura más de una décima de segundo.

hace 3 meses   josecristian94_103

Hola Carlos,

he probado lo que me has comentado y el problema sigue. He creado una instalación de FS desde 0 con la versión 2016.017 y el problema se repite por ejemplo al crear un albarán y consultarlo. Según la documentacion de mysql a partir de la version 5.6.7 es obligatorio eliminar las reestricciones para hacer cambios sobre una columna que tiene reestriccion, es decir, eliminar la reestriccion, modificar la columna y añadir la reestriccion.

"As of 5.6.7, the server prohibits changes to foreign key columns that have the potential to cause loss of referential integrity. It also prohibits changes to the data type of such columns that may be unsafe. For example, changing VARCHAR(20) to VARCHAR(30) is permitted, but changing it to VARCHAR(1024) is not because that alters the number of length bytes required to store individual values. A workaround is to use ALTER TABLE ... DROP FOREIGN KEY before changing the column definition and ALTER TABLE ... ADD FOREIGN KEY afterward."

He probado la version demo de FS desde la web de facturascripts.com y no ocurre el problema porque por defecto al instalar FS no se comprueban los tipos (Comprobaciones en la base de datos en el menu Panel de control>avanzado)

Saludos.

hace 3 meses   NeoRazorX   admin

- La comprobación de tipos está desactivada por ser algo innecesario el 99.999% de las veces. Solamente es interesante para los que vienen de abanq/eneboo o de versiones muy muy antiguas de FacturaScripts.
- De verdad que ya he entendido lo de MySQL 5.6.7. En serio, ya lo pillo.

Hoy mismo he realizado varias instalaciones desde 0 sobre varios sistemas, desde MySQL 5.5 hasta la 5.7, sin errores. Necesito algo más que esto para trabajar el error.

Dices que haces una instalación desde 0, con la última versión y al crear un albarán ya falla. ¿Sin modificar nada más en la configuración, ni instalar ningún otro plugin, no? ¿Puedes darme datos del entorno? ¿Windows, linux, mac? ¿Versión de PHP y de MySQL? Necesito poder replicar el error para estudiarlo.

hace 3 meses   luismipr   partner

Yo acabo de instalar en un ubuntu 16.04 limpio con mysql 5.7 y no he tenido ningún problema.
Seguro que tienes todo correctamente instalado?
Es raro que te ocurran esos problemas con las claves foraneas...

Saludos.

hace 3 meses   josecristian94_103

Hola Carlos y luismipr,

tengo un entorno de test sobre xampp (3.2.1) con PHP 5.5.11 y MySQL Server 5.6.16 Sobre Windows.

El procedimiento para replicar el error es:
1º Instalar FS desde 0
2º Instalar el plugin facturacion_base
3º Crear un albaran basico con una referencia y guardar
4º Activar la comprobación de tablas (Panel de control>avanzado > Comprobaciones en la base de datos: comprobar los tipos de las columnas de las tablas)
5º Limpiar cache
6º Acceder al albaran
7º Limpiar cache
8º Acceder de nuevo al alabaran

Cualquier duda o si necesitan mas datos diganmelo.

Saludos y Muchas gracias.

Realizado este procedimiento s
image

hace 3 meses   NeoRazorX   admin

¿Continúa el error tras la actualización?

hace 3 meses   josecristian94_103

Hola Carlos,

gracias por la actualización, en nuevas instalaciones no se genera el error, pero al actualizar una version anterior siguen apareciendo los errores.

Saludos.

No se pueden hacer más comentarios. Mejor escribe una nueva pregunta