IdentityServer4使用EFCore生成MySql Specified key was too long; max key length is 1000 bytes

笑着哭i 提交于 2020-08-07 10:31:42

IdentityServer4中,使用efcore生成PersistedGrant数据库时报错,错误信息如下:

fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE INDEX `IX_PersistedGrants_SubjectId_ClientId_Type` ON `PersistedGrants` (`SubjectId`, `ClientId`, `Type`);
Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE INDEX `IX_PersistedGrants_SubjectId_ClientId_Type` ON `PersistedGrants` (`SubjectId`, `ClientId`, `Type`);
...
Specified key was too long; max key length is 1000 bytes

在mysql中建立索引时,key的长度太长,由于mysql默认 default-storage-engine=MyIsam  ,MyIsam引擎有key长度限制,超过1000bytes就会报错。

在mysql.ini配置文件中,改为 default-storage-engine=INNOD ,重启即可

修改后组合索引中单列长度不能超过767bytes, 总长度不能超过3072bytes

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!