Solusi 1071 – Specified key was too long; max key length is 1000 bytes

Dapat masalah dari mbak Intan soal pemulihan backup database MySQLnya. Tampaknya bukan CMS standar atau ini migrasi antara database server berbeda, enginennya atau versinya saja yang lain. Yang pasti ada kode errornya 1071 - Specified key was too long; max key length is 1000 bytes dan ini akan sangat membantu dalam troubleshootingnya.

Pesan kesalahan lengkapnya adalah seperti berikut:

--
-- Table structure for table `ps_translation`
--

CREATE TABLE IF NOT EXISTS `ps_translation` (
  `id_translation` int(11) NOT NULL AUTO_INCREMENT,
  `id_lang` int(11) NOT NULL,
  `key` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `translation` longtext COLLATE utf8_unicode_ci NOT NULL,
  `domain` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `theme` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id_translation`),
  UNIQUE KEY `theme` (`key`,`theme`,`id_lang`,`domain`),
  KEY `IDX_ADEBEB36BA299860` (`id_lang`),
  KEY `key` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;


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

Intinya karena primary keynya terlalu panjang, lebih dari batas default MyISAM sebesar 1000 byte untuk indeksnya.

Solusi yang saat ini terpikirkan adalah dengan mengganti database enginenya ke InnoDB (yang sejak versi MySQL 5.7 keatas nilainya jadi 3072 byte, versi lamanya cuma 767 byte):

set GLOBAL storage_engine='InnoDb'

Kemudian silahkan coba impor databasenya lagi.

Apabila masih bermasalah coba ini juga:

set GLOBAL innodb_large_prefix=on;

Sekian. Semoga lancar restorenya. 🙂

Tinggalkan komentar