Translate

lunes, 22 de septiembre de 2014

Error: Duplicate entry '1-1' for key 'PRIMARY' en MySQL

Introducción


Apenas hace poco conectándome con una base de datos en Java me salió el error:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'PRIMARY'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1816)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1730)


Ustedes pudieran tener algo similar  si ejecutan algo como
Insert into usuario_has_mesa values('" + idusuario + "','" + numeroDeMesa + "')"

Solución


Cambiar agregando la palabra IGNORE
Insert IGNORE into usuario_has_mesa values('" + idusuario + "','" + numeroDeMesa + "')"

Explicación


A pesar de que es una modificación muy simple, le estamos indicando al sistema que no trate de insertar nuevos registros si la base de datos ya tiene alguno con la misma clave principal. Esto básicamente nos servirá para evitar llenar datos duplicados o para evitar llenar mal nuestra base de datos.

No hay comentarios:

Publicar un comentario