Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? [solucionado]

Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? [solucionado]
Artículo
Responder citando    Descargar mensaje  
Mensaje Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? [solucionado] 
 
Sabeis que significa este error:

 error_due

Me ha dado en una aplicación que estoy haciendo con sqlite3


Nota:
He buscado en el foro y he encontrado esto:
http://foro.gambas-es.org/viewtopic.php?f=3&t=609

Mañana lo leo con atención.... no lo pongo [solucionado] todavia...



 
última edición por jsbsan el Lunes, 02 Marzo 2015, 11:07; editado 1 vez 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Domingo, 01 Marzo 2015, 22:30 ]
 


Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? [solucionado]
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? 
 
Significa que estás infringiendo la integridad referencial y no se pueden grabar los datos. Por ejemplo intentas meter un nulo en un campo que no pude ser nulo, intentas poner un valor en un campo que es clave foránea que no existe en la tabla referida, etc.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Lunes, 02 Marzo 2015, 09:20 ]
Responder citando    Descargar mensaje  
Mensaje Re: Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? 
 
Shordi:

Gracias por explicarme el error. Te cuento...

Es algo super extraño lo que me ha pasado, y lo he podido solucionar, sin tocar ninguna linea de código de  mi programa:

Os cuento:
1) Normalmente, trabajo con Sqlite3, con el complemento Sqlite Manager, ( https://addons.mozilla.org/es/firefox/addon/sqlite-manager/ ) que se instala en Firefox.
Es muy bueno, y admite crear/editar/insertar datos, etc... con tablas y además también te permite crear, modificar  y mostrar  las Vistas.

2) Una base de datos que cree con Sqlite Manager, la abrí desde el editor de bases de datos de Gambas3, añadí un campo nuevo.
Pero la definición de la tabla módificada, es muy distinta a como la crea Sqlite Manager:

Gambas3:
CREATE TABLE 'descompuestolabores' ( 'iddescompuesto' INT4 NOT NULL , 'idpresupuesto' INT4, 'idlabor' INT4, 'precio' FLOAT8, 'idtipo' INT4, 'comentario' TEXT, 'medicion' FLOAT8, 'total' FLOAT8, 'precioenlazado' BOOL, 'idorden' INT4, PRIMARY KEY ('iddescompuesto') )


Sqlite Manager: (una tabla similar)
CREATE TABLE "descompuestomateriales" ("iddescompuestomaterial" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , "idpresupuesto" INTEGER, "idmaterial" INTEGER, "medicion" FLOAT, "precio" FLOAT, "total" FLOAT,"comentario" TEXT, "idtipo" INTEGER)


Como veis, son muy parecidas, usa INT4 en vez INTEGER, etc... la única diferencia que veo más importante es la PRIMARY KEY, la define de una manera diferente.
Gambas3:  'iddescompuesto' INT4 NOT NULL  y al final pone PRIMARY KEY ('iddescompuesto')
Sqlite Manager: "iddescompuestomaterial" INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL  UNIQUE

Aqui creo que viene el fallo, en Gambas3, no he sabido definir el AUTOINCREMENT,  con lo cual no me deja añadir registros....


3) Solución:
Siguiendo el "patrón" de la definicion que hace en Sqlite Manager, borre y cree de nuevo la tabla "descompuestolaborales"

Y solucionado..



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Lunes, 02 Marzo 2015, 11:07 ]
Responder citando    Descargar mensaje  
Mensaje Re: Error: Cannot Create Record: Abort Due To Constraint Violation ¿ Que Significa? [solucionado] 
 
Es lo que tiene SQLite. Todos los campos son texto en realidad. Los puedes definir como quieras, que luego puedes grabar lo que quieras. Todo es texto. Eso es muy bueno por la flexibilidad inmensa que te da, es muy malo por la ambigüedad que genera. ¿Quién se encarga de que lo que se define como número sea númerico y las fechas, fechas, etc.? gambas con su "capa de gestión de datos". Por tanto lo que para gambas es bueno, con sqlite, puede no serlo para otros gestores de datos y viceversa, en tanto que SQLite se lo traga todo.

Saludos.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Lunes, 02 Marzo 2015, 14:36 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 



 

cron