Página 1 de 1

MySQL / MariaDB - Index column size too large. The maximum column size is 767 bytes

Enviado: 29 Set 2021 09:42
por marceloleaes
Erro reproduzido ao importar um DUMP durante migração de banco de um antigo servidor para um novo.

O suporte de prefixo e os comprimentos dos prefixos dependem do mecanismo de armazenamento. Por exemplo, um prefixo pode ter até 767 bytes para tabelas InnoDB ou 3072 bytes se a opção innodb_large_prefix estiver habilitada. Para tabelas MyISAM, o limite de comprimento do prefixo é 1000 bytes.
Se você precisa criar um índice em um campo com mais de 255 caracteres, você precisa modificar os 3 parâmetros a seguir:

Arquivo my.cnf

Código: Selecionar todos

innodb_file_format=barracuda
innodb_file_per_table=true
Dump do banco de dados

Localizar:

Código: Selecionar todos

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Substituir por:

Código: Selecionar todos

ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

Após ajustes importe o banco