Inicio › Foros › Bases de datos › MySQL › Error autoincrement duplicate key MariaDB MySQL [RESUELTO]
Etiquetado: autoincremento, duplicate, error, incremento, key, mariadb, mysql, resuelto, solución, solucionado, solved, sql
- Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 3 meses, 3 semanas por Varios.
-
AutorEntradas
-
06/15/2024 a las 20:02 #50956VariosModerador
Al intentar aplicar el parámetro Autoincremento a un campo de un tabla que ya tiene registros (campo de tipo entero con valores numéricos) me aparece este error:
Operation failed: There was an error while applying the SQL script to the database.
Executing:
ALTER TABLE almacen.stock
CHANGE COLUMN codigo codigo INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
ADD PRIMARY KEY (codigo);ERROR 1062: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ‘1’ for key ‘PRIMARY’
SQL Statement:
ALTER TABLE almacen.stock
CHANGE COLUMN codigo codigo INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
ADD PRIMARY KEY (codigo)¿Cómo puedo asignar el Autoincremento a un campo de una tabla que ya tiene registros sin que dé error?
Utilizo MariaDB como motor de base de datos, aunque supongo que la solución será la misma si fuera MySQL.
06/15/2024 a las 20:26 #50957alonsojpdSuperadministradorEl campo «codigo» que intentas establecer como autoincremento ¿tiene alguna dependencia en otra tabla? ¿es clave foránea de otra tabla?
06/15/2024 a las 20:27 #50959VariosModeradorEn principio no, es clave primaria de su tabla, pero no es clave foránea de otras tablas. No tiene dependencias.
06/15/2024 a las 20:35 #50960alonsojpdSuperadministradorok, si te da igual qué valor tenga en el campo «codigo» cada registro, lo que puedes hacer para establecerlo como autoincremento es lo siguiente:
1º Haz una copia de seguridad de la tabla, por si acaso necesitaras restaurarla.
2º Elimina el campo «codigo» completamente, supongamos que la tabla se llama «stock» y la base de datos «almacen», para eliminar el campo «codigo», siendo primery key, puedes usar esta sentencia SQL:MySQL123ALTER TABLE almacen.stockDROP COLUMN codigo,DROP PRIMARY KEY;3º Una vez eliminado el campo «codigo» y guardada la tabla, lo que haremos ahora será crear el campo «codigo» de tipo autoincremento y primary key, con la sentencia SQL:
MySQL123ALTER TABLE almacen.stockADD COLUMN codigo INT NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (codigo);Con esto, si la tabla «almacen.stock» tenía registros, regenerará los valores del campo código del 1 al número de registros que tuviera la tabla, de forma incremental. A partir de este momento, cada vez que insertes un registro en la tabla «stock», se añadirá un valor automático al campo «codigo», siendo un número incremental correlativo.
06/15/2024 a las 20:37 #50961VariosModeradorPerfecto, muchas gracias, solucionado.
Eliminé la columna codigo y la volví a crear como me has indicado. Efectivamente se han generado los valores nuevamente.
Resuelto.
Muchas gracias!! -
AutorEntradas
- Debes estar registrado para responder a este debate.