Esta consulta es de hace 5 años. Tenga eso en cuenta.
tronico_f74d39
tronico_f74d39
España

Hola a todos, he creado un plugin con varias tablas que...

Hola a todos, he creado un plugin con varias tablas que enlazan unas a otras con sus respectivas claves foraneas, todo funciona correcto y probadfo con miles de registros.
Pero cuando despliego el plugin desde cero (sin datos) en un facturascripts recien instalado, al activar el plugin me da éste error:

Error al ejecutar la consulta 0: Can't create table `basedatos-prueba`.`tablalibros` (errno: 150 "Foreign key constraint is incorrectly formed"). La secuencia ocupa la posición 29

Aunque luego le meto datos y va todo correcto y no sale más el error. Entiendo que una clave foranea no está bien definida pero las he revisado y no encuentro nada raro, tengo otras definidas igual y no me salta ese error.

Esta es la tabla:

<tabla>
<columna>
<nombre>idlibro</nombre>
<tipo>serial</tipo>
<nulo>NO</nulo>
</columna>
<columna>
<nombre>titulo</nombre>
<tipo>varchar(50)</tipo>
<nulo>NO</nulo>
</columna>
<columna>
<nombre>autor</nombre>
<tipo>varchar(30)</tipo>
<nulo>NO</nulo>
</columna>

<columna>
<nombre>genero</nombre>
<tipo>varchar(30)</tipo>
<nulo>NO</nulo>
</columna>
<columna>
<nombre>logo</nombre>
<tipo>text</tipo>
<nulo>YES</nulo>
</columna>
<restriccion>
<nombre>aparatos_pkey</nombre>
<consulta>PRIMARY KEY (idlibro)</consulta>
</restriccion>
<restriccion>
<nombre>relacion_autor</nombre>
<consulta>FOREIGN KEY (autor)
REFERENCES tablaautores (autor)
ON DELETE CASCADE ON UPDATE CASCADE</consulta>
</restriccion>
<restriccion>
<nombre>relacion_genero</nombre>
<consulta>FOREIGN KEY (genero)
REFERENCES tablageneros (genero)
ON DELETE CASCADE ON UPDATE CASCADE</consulta>
</restriccion>

</tabla>


¿veis algún error?
06-03-2016 22:34:06   07-03-2016 15:03:53   181   [NeoRazorX]
La base de datos es MySQL y las otras claves foraneas de las otras tablas estan definidas igual.
Intenta crear una tabla que depende de otra sin haber cargado esa otra.
Modifica las funciones install() de cada modelo para cargar el modelo de la tabla que necesite, es decir, si la tabla2 depende de la tabla2, en el modelo de la tabla2, el install () debería ser así:
/// hacemos un new solamente para asegurarnos que compruebe primero la tabla1
new tabla1();
return '';
Ok, ya no da error al poner los news.

Gracias por la solución.


Copyright (c) 2013-2020 FacturaScripts