Erro no MySQL: Error Code: 1071. Specified key was too long; max key length is 1000 bytes
Tentei criar no MySQL as tabelas responsáveis pelo gerenciamento de usuários do Asp.net, o Identity.
O Identity precisa das tabelas Roles, Users, UserClaims, Userlogins e Userroles. Quando chegava a hora de criar a tabela Userlogins, com o código abaixo dava o erro:
Depois de algumas tentativas descobri uma solução simples.
O MySQL estava criando as tabelas com a Engine MyISAM. Troquei para a Engine InnoDB e as tabelas e relacionamentos foram criados sem problema.
Para alterar a engine basta digitar:
Já para criar uma tabela já considerando essa engine basta acrescentar o código ENGINE=InnoDB ao final do comando. A código para criação tabela 'userlogins' mostrado acima ficaria então assim:
Com esta diretiva a tabela será criada sem o erro. Espero ter ajudado.
Abraço!
O Identity precisa das tabelas Roles, Users, UserClaims, Userlogins e Userroles. Quando chegava a hora de criar a tabela Userlogins, com o código abaixo dava o erro:
CREATE TABLE `userlogins` ( `LoginProvider` varchar(128) NOT NULL, `ProviderKey` varchar(128) NOT NULL, `UserId` varchar(128) NOT NULL, PRIMARY KEY (`LoginProvider`,`ProviderKey`,`UserId`), KEY `ApplicationUser_Logins` (`UserId`), CONSTRAINT `ApplicationUser_Logins` FOREIGN KEY (`UserId`) REFERENCES `users` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION );
Error Code: 1071. Specified key was too long; max key length is 1000 bytes.Depois de algumas tentativas descobri uma solução simples.
O MySQL estava criando as tabelas com a Engine MyISAM. Troquei para a Engine InnoDB e as tabelas e relacionamentos foram criados sem problema.
Para alterar a engine basta digitar:
ALTER TABLE `nometabela` ENGINE=InnoDB
Já para criar uma tabela já considerando essa engine basta acrescentar o código ENGINE=InnoDB ao final do comando. A código para criação tabela 'userlogins' mostrado acima ficaria então assim:
CREATE TABLE `userlogins` ( `LoginProvider` varchar(128) NOT NULL, `ProviderKey` varchar(128) NOT NULL, `UserId` varchar(128) NOT NULL, PRIMARY KEY (`LoginProvider`,`ProviderKey`,`UserId`), KEY `ApplicationUser_Logins` (`UserId`), CONSTRAINT `ApplicationUser_Logins` FOREIGN KEY (`UserId`) REFERENCES `users` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=InnoDB;
Com esta diretiva a tabela será criada sem o erro. Espero ter ajudado.
Abraço!
Comentários
Postar um comentário