Solución al error importando en MySQL: there can be only one auto column and it must be defined as a key

por | Feb 1, 2014 | Programación Joomla!

Solución al error importando en MySQL: there can be only one auto column and it must be defined as a keyMySQL es el sistema gestor de bases de datos usado en nuestros servidores, y es el que usa cPanel por defecto y uno de los más utiliados y probados en todo el mundo.

Puedes usarlo desde consola de comandos (CLI) o desde otros clientes, el más conocido y que además es el usado en nuestro hosting es phpMyAdmin, que funciona bajo una interfaz web, también hay otros clientes de escritorio como Navicat.

Es probable que alguna vez, si vais a importar una base de datos MySQL os encontréis con este error:



#1075 – Incorrect table definition; there can be only one auto column and it must be defined as a key

Esto es muy común sobre todo cuando se importan ficheros sql generados desde sistemas como Navicat, SQLYog o programas similares. El error se produce por que se intenta importar un fichero SQL que tiene definida una tabla con una columna como autoincremental, pero no está como clave primaria, por ejemplo:

 -- ---------------------------- -- Table structure for `prefix_admintools_badwords` -- ---------------------------- DROP TABLE IF EXISTS `prefix_admintools_badwords`; CREATE TABLE `prefix_admintools_badwords` ( `id`  bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT , `word`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL  ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 

Como podéis ver la columna id está creada como autoincremental, pero en ninguna parte se indica que sea clave primaria. Para solucionarlo habría que cambiarlo por esto:

 -- ---------------------------- -- Table structure for `prefix_admintools_badwords` -- ---------------------------- DROP TABLE IF EXISTS `prefix_admintools_badwords`; CREATE TABLE `prefix_admintools_badwords` ( `id`  bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT , `word`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 

Básicamente hemos añadido esta línea:

PRIMARY KEY (`id`)

Y con esto quedaría solucionado y ya se podría importar la base de datos con normalidad desde phpMyAdmin.