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

O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares1 , com mais de 10 milhões de instalações pelo mundo.2
Avatar do usuário
marceloleaes
Administrator
Administrator
Mensagens: 1516
Registrado em: 10 Jun 2013 12:45
Localização: Novo Hamburgo
Idade: 41
Contato:
Status: Offline

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

Mensagem 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



Voltar para “Mysql - MariaDB”