Sábado, 01 Febrero 2014 02:42

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

Escrito por 
CMS:  Todos |  Versión:  Todas |  Nivel de dificultad:  Medio |  Tiempo estimado de lectura:  5 minutos


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.



¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



David Noguera

Miembro del equipo de sistemas de webempresa.com Google+