3
respostas

Specified key was too long

Estou obtendo este erro quando vai criar a FK de User com Pedido.

java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 1000 bytes
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:764) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648) ~[mysql-connector-java-8.0.20.jar:8.0.20]
    at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95) ~[HikariCP-3.4.5.jar:na]
    at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-3.4.5.jar:na]
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.4.17.Final.jar:5.4.17.Final]
    ... 17 common frames omitted

A única diferença é que estou usando MySQL mas não acredito que isso possa ser o problema. Tentei ir adicionarna mão a FK mas o erro persiste. Alguém consegue me ajudar? Obrigado.

3 respostas

Oi Allan

Parece que você está estourando o tamanho máximo do index da sua tabela, qual valor você está tentando inserir?

No seu mysql tenta rodar o comando abaixo e criar a tabela novamente:

SET @@global.innodb_large_prefix = 1;

Olá Otávio, muito obrigado pela sua resposta mas infelizmente não funcionou. Parece que ele não encontra nenhuma variável referente ao innodb e eu não faço ideia do pq. Segundo o workbench e o MySQL Command line Client, quando eu rodo aparece a seguinte mensagem:

11:06:14 SET @@global.innodb_large_prefix = 1 Error Code: 1193. Unknown system variable 'innodb_large_prefix' 0.000 sec

Já procurei em alguns outros sites e todos pedem para usar comandos que são referentes ao innodb mas só aqui isso não tá funcionando.

Como não achei solução tive que realmente migrar para o MariaDB como está nas aulas e funcionou de primeira. Fica de alerta pra quem usa MySQL que não vai funcionar pelo menos nessa aula.