Domanda

Ho problemi a cercare di convertire un tavolo da Myisam a InnoDB in MySQL 5.6.

Di seguito è riportato il dump della tabella:

--
-- 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 */;

Funziona come Myisam. Ma, se provo a convertirlo in innodB (o se provo a modificare questo dump per inserirlo sulla riga di comando come file SQL), ottengo il seguente errore:

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

Capisco quell'errore - o almeno ho pensato di averlo fatto. Non ne sto davvero usando più di uno AUTO_INCREMENT colonna e esso è definito come chiave primaria.

Inoltre, le informazioni che ho trovato sull'errore sono sempre dovute a una chiave mancante ovvia o di una definizione di auto_increment duplicata. Un'altra cosa che vedo generalmente commentata è che Lo stesso vale per Myisam e InnoDB.

Quindi, perché funziona per Myisam e non per InnoDB?

Grazie in anticipo per i commenti.

Francisco

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top