Eu uso um google could sql (mysql) como meu banco de dados de produção. Para replicar esse banco de dados para teste no docker, eu uso a imagem mysql:8.
Notei que um dos meus scripts de migração é bem-sucedido no banco de dados da nuvem, mas falha durante os testes. O script a seguir causa um erro:
CREATE TABLE testTable
(
name varchar(1000)
);
CREATE INDEX idx_device_designs_name ON testTable (name);
O erro:Specified key was too long; max key length is 3072 bytes [Failed SQL: (1071)...
Entendo o motivo do erro, mas como nosso banco de dados de produção padrão não o produz, estou procurando a configuração que desabilita essa verificação.
EDITAR 1:
SELECT VERSION();
-> 8.0.31-google
SHOW CREATE TABLE tableName
produção
CREATE TABLE `testTable` (
`name` varchar(1000) COLLATE utf8mb3_unicode_ci NOT NULL,
KEY `idx_device_designs_name` (`name`),
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
contêiner docker
CREATE TABLE `testTable` (
`name` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
a produção teve o índice aplicado no passado (antes de uma atualização do mysql, então 5.7).
SHOW TABLE STATUS LIKE 'testTable'
(em produção)
testTable,InnoDB,10,Dynamic,2,8192,16384,0,32768,0,3,2024-11-14 08:52:26,,,utf8mb3_unicode_ci,,"",""