Key too long-error (MySQL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

In de lente van 2018 kreeg ik deze foutmelding tijdens het importeren van een db-dump op een werkstation waarop ik lang niet gewerkt had:

#1071 - Specified key was too long; max key length is 767 bytes

Deze code was de oorzaak:

DROP TABLE IF EXISTS `root_child`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `root_child` (
  `sku_child` varchar(511) NOT NULL,
  `sku` varchar(255) NOT NULL DEFAULT '',
  `ean_id` varchar(13) DEFAULT NULL,
  `tool_id` varchar(255) DEFAULT NULL COMMENT 'Dit is een vereenvoudigde tool_id. Goede kans dat-ie niet precies overeenkomst met tabel tool',
  `tool_brand` varchar(255) DEFAULT NULL COMMENT 'Deze kolom is redundant, maar wel erg handig',
  `tool_type` varchar(255) DEFAULT NULL COMMENT 'Deze kolom is redundant, maar wel erg handig',
  `source` varchar(255) DEFAULT NULL,
  `trust` varchar(255) DEFAULT NULL,
  `cat` text COMMENT 'The records in this table are quite heterogenuous. Therefore, use this column to filter specific records',
  PRIMARY KEY (`sku_child`),
  KEY `tool_type` (`tool_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

Het probleem was de regel `sku_child` varchar(511) NOT NULL,.

Oorzaak: Op de broncomputer gebruikte ik MySQL 5.7-nog wat, en op de doelcomputer MySQL 5.5-nog wat.

Upgraden ahv. [1]:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb
sudo gdebi mysql-apt-config_0.8.9-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server

De eerste twee regels starten een interactief proces om apt-get te configureren mbt. MySQL - Interessant!