Key too long-error (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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!