30 de diciembre de 2018

Error de MySQL Uncaught exception

Un error generado desde PHP en una consulta a MySQL, usando el conector de base de datos PDO. La sintaxis del error es: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'.

Un error estúpido, pero muy sencillo de resolver. Simplemente hubo un problema en la declaración de una tabla, en una base de datos MySQL:

CREATE TABLE IF NOT EXISTS `users` (
  `id` INT NOT NULL,
  `name` VARCHAR(60) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email` VARCHAR(254) NOT NULL,
  PRIMARY KEY (`id`))

Cuando lo correcto es:

CREATE TABLE IF NOT EXISTS `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(60) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email` VARCHAR(254) NOT NULL,
  PRIMARY KEY (`id`))

El error es simplemente que se omitió declarar la clave primaria AUTO_INCREMENT.