Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

Estas en el tema de Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE en el foro de Mysql en Foros del Web. Buenas, verán, acabo de ponerle a mi página un contador de visitas privado que se almacena en MySQL. Se almacena la IP, la cantidad de ...
  #1 (permalink)  
Antiguo 16/08/2012, 07:55
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 12 años, 3 meses
Puntos: 7
Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

Buenas, verán, acabo de ponerle a mi página un contador de visitas privado que se almacena en MySQL. Se almacena la IP, la cantidad de visitas y la fecha de la última visita.

La tabla tiene 4 columnas:
id (AUTO_INCREMENT),
IP (VARCHAR 15),
cantidad (INT),
fecha_ultima_visita (CURRENT_TIMESTAMP & ON UPDATE CURRENT_TIMESTAMP)

Quería hacerlo todo con una sola consulta así que uso esto actualmente:

mysql_query("INSERT INTO visitas (IP, cantidad) VALUES ('".$_SERVER['REMOTE_ADDR']."','1') ON DUPLICATE KEY UPDATE cantidad=cantidad+1");

El primer problema que tuve es que en vez de actualizarse la cantidad al visitar la misma IP, creaba una nueva fila, problema que solucioné indicando que la columna 'IP' fuera única. Ahora al visitar la misma IP la página, se suma 1 a la columna de cantidad pero misteriosamente el Autoincrement de la columna id sube aunque no se haya insertado ninguna fila nueva.

¿Alguien sabría cómo solucionar esto?
Si no lo hago con 2 consultas y listo.

Gracias

Última edición por Adrii952; 16/08/2012 a las 08:00
  #2 (permalink)  
Antiguo 16/08/2012, 08:15
 
Fecha de Ingreso: enero-2012
Ubicación: Caracas
Mensajes: 75
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

Intenta esto....

Código MySQL:
Ver original
  1. mysql_query("INSERT INTO visitas (IP, cantidad) VALUES ('".$_SERVER['REMOTE_ADDR']."','1') ON DUPLICATE KEY UPDATE cantidad=cantidad+1, id=LAST_INSERT_ID(id)");

Última edición por beeman00; 16/08/2012 a las 08:17 Razón: correccion....
  #3 (permalink)  
Antiguo 16/08/2012, 08:26
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

Nada, sigue aumentando el auto increment con cada actualización a pesar de no insertarse ninguna fila.
  #4 (permalink)  
Antiguo 16/08/2012, 08:58
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

Ya lo he solucionado yo mismo, hay que añadir la siguiente línea sin las comillas a my.ini y reiniciar el servicio de MySQL

"innodb_autoinc_lock_mode = 0"

Solucionar se ha solucionado, espero que no tenga efectos secundarios en otras tablas.
  #5 (permalink)  
Antiguo 16/08/2012, 09:28
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

no tiene sentido. el problema es tuyo, no hay que tocar ninguna configuración rara.

Si pones solo el valor autoincrement como clave obvio que va a insertar una nueva, nunca se va a actualizar porque nunca se va a cumplir "duplicate key"

poné la ip como campo unique, que no se pueda repetir, usa la ip como clave!
  #6 (permalink)  
Antiguo 16/08/2012, 09:44
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

si sigues usando INSERT INTO solo consigues insertar registros en la tabla, necesitas hacer un UPDATE en el registro para incrementar el campo visitas
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #7 (permalink)  
Antiguo 16/08/2012, 10:26
Avatar de Adrii952  
Fecha de Ingreso: diciembre-2011
Ubicación: Madrid
Mensajes: 116
Antigüedad: 12 años, 3 meses
Puntos: 7
Respuesta: Problema con Autoincrement al usar ON DUPLICATE KEY UPDATE

La IP ya estaba en unique como dije, y ya está todo solucionado, no sé que problema hay ahora. Lo que me ha pasado es algo normal al usar "ON DUPLICATE KEY UPDATE" si no está configurado el autoincrement correctamente en my.ini, busquen en google o experimenten vosotros mismos, no hay otra forma.

Etiquetas: duplicate, key, update, usar, autoincrementable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:48.