Question

J'ai des problèmes d'essayer de convertir une table de Myisam en innodb dans MySQL 5.6.

Ce qui suit est le vidage de la table:

--
-- Table structure for table `companies`
--

DROP TABLE IF EXISTS `companies`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `companies` (
  `uid` int(20) NOT NULL,
  `cid` int(20) NOT NULL AUTO_INCREMENT,
  `cname` varchar(500) NOT NULL,
  `rfc` varchar(20) NOT NULL,
  `address` varchar(1000) NOT NULL,
  `dbUseExternal` tinyint(1) NOT NULL DEFAULT '0',
  `dbHost` varchar(50) NOT NULL,
  `dbPort` varchar(50) NOT NULL,
  `dbUser` varchar(50) NOT NULL,
  `dbPass` varchar(50) NOT NULL,
  `dbSSL` varchar(50) NOT NULL,
  `dbDriver` varchar(50) NOT NULL,
  `dbName` varchar(50) NOT NULL,
  `status` int(10) NOT NULL,
  PRIMARY KEY (`uid`,`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

Cela fonctionne comme myisam. Mais, si j'essaie de le convertir en innodb (ou si j'essaie de modifier ce vidage pour l'insérer sur la ligne de commande en tant que fichier SQL), j'obtiens l'erreur suivante:

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

Je comprends cette erreur - ou du moins je pensais que je l'ai fait. Je n'utilise pas vraiment plus d'un AUTO_INCREMENT colonne et it est défini comme la clé primaire.

De plus, les informations que j'ai trouvées concernant l'erreur sont toujours dues à une clé manquante évidente ou à une définition en double Auto_increment. Une autre chose que je vois généralement commentée est que Il en va de même pour Myisam et Innodb.

Alors, pourquoi cela fonctionne-t-il pour Myisam et non pour InNODB?

Merci d'avance pour vos commentaires.

Francisco

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top