Um pouco de contexto: estou testando o flowable, no entanto, o tomcat engasga em um certo ponto ao preencher o banco de dados, a parede de exceção usual de texto se resume ao título deste post. A primeira vez que coloco minhas mãos no tomcat em muito tempo, posso estar perdendo o óbvio.
Atualização: esta consulta agora funciona.
CREATE TABLE flowable.FLW_EVENT_DEPLOYMENT (
ID_ VARCHAR(255) NOT NULL,
NAME_ VARCHAR(255) NULL,
CATEGORY_ VARCHAR(255) NULL,
DEPLOY_TIME_ datetime(3) NULL,
TENANT_ID_ VARCHAR(255) NULL,
PARENT_DEPLOYMENT_ID_ VARCHAR(255) NULL,
CONSTRAINT PK_FLW_EVENT_DEPLOYMENT PRIMARY KEY (ID_)
)
O que eu fiz: mudei de utf8mb4 para utf8 simples graças a este bit "Eu sei que UTF8mb4 só pode suportar até VARCHAR (191)" (obrigado @Lennart por me fazer pensar mais sobre isso). Portanto, há progresso, mas tenho o mesmo erro posteriormente em outra consulta:
CREATE UNIQUE INDEX ACT_IDX_EVENT_DEF_UNIQ ON flowable.FLW_EVENT_DEFINITION(KEY_, VERSION_, TENANT_ID_)
Essas três colunas são respectivamente varchar(255) utf8_general_ci, int(11), varchar(255) utf8_general_ci.
tomcat 8.5.61
mariadb 10.4.17
Encontrei várias soluções sugeridas, mas nenhuma parece se aplicar à minha versão do mariadb, innodb-large-prefix=ON
em particular foi preterida, tentei alguns agrupamentos diferentes sem sucesso. Já gastei bastante tempo com isso, tentei trocar o conector mariadb pelo conector mysql também para descartar um bug na própria biblioteca.
Por exemplo, tentei a solução aceita aqui sem sucesso, provavelmente porque:
- innodb_file_format está obsoleto e não tem efeito. Ele pode ser removido em versões futuras.
- innodb_file_format_max surpreendentemente causa um erro na verificação de configuração, o Antelope está obsoleto de qualquer maneira e o mariadb não o usaria para uma nova tabela
- innodb_large_prefix foi removido em 10.3.1 e restaurado como uma variável obsoleta e não utilizada em 10.4.3 para fins de compatibilidade.
Use ENGINE=InnoDB, não MyISAM. Suas tentativas de alterar as configurações foram inúteis porque você não está usando o InnoDB para a tabela em questão.
Isso pode ser especificado como padrão em my.cnf antes de criar tabelas. Caso contrário, faça isso explicitamente em
CREATE TABLE
.Além disso, não use 255 cegamente, em vez disso, use limites sensatos.