Errores en BD entre FACTURASCRIPTS y ENEBOO Arreglos varios

Print Friendly, PDF & Email

Manual para compatibilizar Facturascripts con Eneboo en un servidor MySQL haciendo arreglos de los errores de diferentes estructuras en la misma Base de Datos.

  • CREADO POR: miguelajsmaps@gmail.com en https://github.com/Miguel-J/eneboo/wiki (YA NO EXISTE)
  • FECHA PRIMERA EDICIÓN:
  • ACTUAL: miguelajsmaps@gmail.com en http://manuales-eneboo-pineboo.org/facturascripts-instalacion-y-configuracion/facturascripts-y-eneboo-arreglos-varios-tipos-mysql-claves-externas-base-de-datos-etc/
  • ULTIMA ACTUALIZACIÓN:Last updated: noviembre 11, 2019 at 11:58 am

FACTURASCRIPTS y ENEBOO Arreglos de varios errores : tipos MySQL, claves externas base de datos, etc

 

NOTA: CUIDADO CON USAR LOS DOS PROGRAMAS AL MISMO TIEMPO: FACTURASCRIPTS HACE CAMBIOS «EN VIVO» Y NO VERIFICA TODOS LOS CAMBIOS…ME HA PASADO VARIAS VECES QUE ESO AFECTA NEGATIVAMENTE AL FUNCIONAMIENTO DE ENEBOO…y desde Facturascripts se lavan las manos…o le echan la culpa a Eneboo…

  • ERRORES:

Indice:

  1. Cuidado con el Plugin de FS de Eneboo-fix.
  2. Errores de ESTRUCTURA DE BASES DE DATOS DISTINTAS: equivalencia entre campos y tablas DISTINTAS
  3. Activar la lista de órdenes de PHP en las «páginas-vistas» de FS.
  4. El error 121 de mysql indica que ya hay otra restricción con el mismo nombre…..PROBLEMA DE BLOQUEO DE CLAVES FORÁNEAS.
  5. «ALTER TABLE – Cannot add or update a child row: a foreign key constraint fails»….PROBLEMA DE BLOQUEO DE CLAVES FORÁNEAS.
  6. Can’t create table ‘(NOMBRE-BASE-DATOS).#sql-1898_df’ (errno: 150). ….PROBLEMA DE BLOQUEO POR TIPOS DISTINTOS ENTRE MISMOS CAMPOS EN DISTINTAS TABLAS DE LA MISMA BASE DE DATOS.
  7. Creación de tablas MODIFICADAS, ejemplo «ejercialteredtable01180…»
  8. Errores de bloqueos en Eneboo por las claves externas de Facturascripts

 

Haz clic aquí para volver al índice


1-Cuidado con el Plugin de FS de Eneboo-fix.

Lo que el Plugin hace es CAMBIOS en la Base de Datos PARA QUE FUNCIONE en Facturascripts, NO para que funcionen los dos al mismo tiempo, por lo que al querer usar de nuevo Eneboo te encontrarás que NO PUEDES, o que funciona distinto a como lo hacía antes…

 

Haz clic aquí para volver al índice


2-Errores de ESTRUCTURA DE BASES DE DATOS DISTINTAS: equivalencia entre campos y tablas DISTINTAS

  1. Número de pedido: en tabla «facturascli» en FS lo llama «numero2» y en Eneboo «documentocliente»
  2. Nombre de proveedor: en tabla «proveedores» en FS lo llama «nombrecomercial» y en Eneboo «nombre» (el problema es que «nombrecomercial» también existe en Eneboo y FS suele borrarlo sin avisarte
  3. Personas de contacto: no se parecen ni de lejos…Eneboo usa 3-4 tablas….
  4. Traducciones de impresión: no se parecen ni de lejos…Eneboo usa los .tr para los .kut en los módulos de flfiles (sin contar los jasper) y por ejemplo FS usa la tabla «idiomas_fac_det»
  5. Control de acceso-USUARIOS: no se parecen ni de lejos…pendiente…FS usa la tabla «fs_users»
  6. Control de acceso-DERECHOS DE USO: no se parecen ni de lejos…pendiente…FS usa la tabla «fs_access»
  7. FECHA Vencimiento de RECIBO DE CLIENTES: En FS lo «pone» (aún no sé cómo) en el campo «facturascli.vencimiento» y Eneboo lo calcula y coloca en «reciboscli.fechav»….no se parecen ni de lejos…

 

Haz clic aquí para volver al índice


Activar la lista de órdenes de PHP en las «páginas-vistas» de FS.

Para arreglar un error hay que saber dónde está:

Necesitaría el sql completo de esa página para saber cual es la que falla.

  • SOLUCIÓN:
  • Puedes activar el historial sql modificando el archivo config.php (ir a c:\wamp\www(nombre empresa facturascripts)\config.php) y poniendo a TRUE la constante FS_DB_HISTORY.

Ejemplo hacia linea 27:

define(‘FS_DB_HISTORY’, TRUE);

  • El historial aparecerá en la parte de abajo de cada página-web del programa de Facturascripts.

Puedes listar todos los nombres de la restricción de la base de datos con este sql:

select * from information_schema.table_constraints where constraint_schema = ‘NOMBRE_DE_LA_BD’

 

Haz clic aquí para volver al índice


TIPOS IGUALES ENTRE VARIABLES DE DISTINTAS TABLAS:

  • ERROR EN FACTURASCRIPTS:

«Error al ejecutar la consulta 31: Cannot add or update a child row: a foreign key constraint fails (xxxxxxxx., CONSTRAINT ca_albaranescli_facturas FOREIGN KEY (idfactura) REFERENCES facturascli (idfactura) ON DELETE SET NULL ON UP). La secuencia ocupa la posición 13″

  • y gracias al TRUE del historial SQL vemos en la línea 13:

«13. ALTER TABLE albaranescli ADD CONSTRAINT ca_albaranescli_facturas FOREIGN KEY (idfactura) REFERENCES facturascli (idfactura) ON DELETE SET NULL ON UPDATE CASCADE;ALTER TABLE albaranescli ADD CONSTRAINT uniq_codigo_albaranescli UNIQUE (codigo);»


  • RAZONAMIENTO DEL POR QUÉ:

El tipo, el signo, la longitud, el motor y el collate deben ser idénticos en ambas columnas o mysql devolverá error 150.

Porque el tipo int depende enteramente de la configuración de mysql. En versiones muy antiguas era int(10) y ahora es int(11).

El error que arrastras es al intentar enlazar idfactura de albaranescli con idfactura de facturascli. Si tienen el mismo tipo, misma longitud y mismo collate, entonces debe haber algún idfactura que ya no existe:

select * from albaranescli where idfactura not in (select idfactura from facturascli)

El tipo int depende de la configuración de mysql. El tipo de cada columna de las tablas existentes es el que se asignó en su momento, cuando se creó esa tabla. No es una cosa de ahora, a menos que la base de datos sea nueva.

  • Los errores «Cannot add or update a child row: a foreign key constraint fails (xxxxxxxxx., CONSTRAINT ca_albaranescli_facturas…» los devuelve mysql. Pide en los foros de MySQL que sean más específicos.

 

Haz clic aquí para volver al índice


Asunto: Error 150 en MySQL al ejecutar consulta de creación de tabla

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&t=175


El error se debe a que estás intentando crear una tabla que hace referencia, por medio de las CONSTRAINTS, a otras tablas de la base de datos que no existen. Es decir, para crear una tabla, por ejemplo, con:

«CONSTRAINT fk_exclusiva_editorial FOREIGN KEY (codedi) REFERENCES editorial (codedi

debe existir previamente una tabla llamada «editorial» cuya clave primaria sea «codedi» y, lógicamente, en la tabla «exclusiva» también debe existir un campo llamado «codedi». De no ser así dará este error que nos comentas.

 

Haz clic aquí para volver al índice


SOLUCIÓN AL BLOQUEO DE LLAVES FORÁNEAS:

ya lo he solucionado…hay que:

1.- igualar los int, etc

2.- «anular» las claves EN EL CASO DE QUE LA TABLA YA TENGA REGISTROS

https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html

MySQL does not permit the creation of a foreign key constraint where a column references a nonmatching column type. Also, if a table has foreign key constraints, ALTER TABLE cannot be used to alter the table to use another storage engine. To change the storage engine, you must drop any foreign key constraints first.

mysql> SET foreign_key_checks = 0;

mysql> ALTER TABLE…………..aqui pones lo que sale en el historial SQL….en nuestro ejemplo, la línea 13 (sin el 13):

ALTER TABLE albaranescli ADD CONSTRAINT ca_albaranescli_facturas FOREIGN KEY (idfactura) REFERENCES facturascli (idfactura) ON DELETE SET NULL ON UPDATE CASCADE;ALTER TABLE albaranescli ADD CONSTRAINT uniq_codigo_albaranescli UNIQUE (codigo);

mysql> SET foreign_key_checks = 1;


  • Enlaces relacionados:

http://scriptinside.blogspot.com.es/2011/03/mysql-error-1025-explicacion-y-solucion.html

http://devtroce.com/2010/03/24/solucionar-error-cant-create-table-errno-150-en-mysql/

https://forums.mysql.com/read.php?71,576294,576318


  • SOLUCION AL ERROR 150

ALTER TABLE facturascli ADD CONSTRAINT ca_facturascli_asientop FOREIGN KEY (idasientop) REFERENCES co_asientos (idasiento) ON DELETE SET NULL ON UPDATE CASCADE;ALTER TABLE facturascli ADD CONSTRAINT uniq_codigo_facturascli UNIQUE (codigo);

  • Está diciendo que son DISTINTOS:

el CAMPO «idasientop» de la TABLA «facturascli» es distinto en TIPOS, NULLS, etc al CAMPO «idasiento» de la TABLA «co_asientos»

…y hasta que no se igualen no permitirá el ALTER TABLE para añadir la clave externa.

 

Haz clic aquí para volver al índice


Creación de tablas MODIFICADAS, ejemplo «ejercialteredtable01180…»

Creación de tablas MODIFICADAS, ejemplo «ejercialteredtable01180…» o la «proveealteredtable05210182″…..no sé muy bien cuál es el origen, pero se crea por un error de LLAVES FORÁNEAS….y si no se arregla BLOQUEA la creación de nuevos registros EN ENEBOO…si se arreglan las claves y se regenera la base de datos desde Eneboo, desaparecen. En el caso de regenerar sin arreglar las claves alguna vez ha habido de REVISAR LAS CLAVES EXTERNAS DE TODAS LAS TABLAS Y re-nombrar la tabla «altered» que han quedado….

 

Haz clic aquí para volver al índice


1. Errores de bloqueos en Eneboo por las claves externas de Facturascripts

La clave externa de la tabla «albaranescli» que relaciona el campo IDFACTURA con el mismo de la tabla «facturascli» PROVOCA QUE ENEBOO NO FUNCIONE :

ALTER TABLE albaranescli ADD CONSTRAINT ca_albaranescli_facturas FOREIGN KEY (idfactura) REFERENCES facturascli (idfactura) ON DELETE SET NULL ON UPDATE CASCADE

….una vez borrada, vuelve a funcionar todo….en mi caso, no liberaba el albarán al borrar la factura, y creo que era por que Eneboo no permite que esté activada el campo «sin signo»…lo probaré otro dia, ya he perdido demasiado tiempo con esto…

 

Haz clic aquí para volver al índice


error: Content is protected !!