Browse Source
Fix MySQL index key too long for ResourcePermissionGrant
Shorten ResourceName/ResourceKey to 128 on MySQL so the composite unique index fits the InnoDB 3072 bytes limit under utf8mb4.
pull/25495/head
maliming
4 months ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
1 changed files with
7 additions and
2 deletions
-
modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementDbContextModelBuilderExtensions.cs
|
|
|
@ -33,9 +33,14 @@ public static class AbpPermissionManagementDbContextModelBuilderExtensions |
|
|
|
|
|
|
|
b.ConfigureByConvention(); |
|
|
|
|
|
|
|
// MySQL has a 3072 bytes index key length limit (utf8mb4), the composite
|
|
|
|
// unique index below exceeds it, so shorten these columns for MySQL only.
|
|
|
|
var maxResourceNameLength = builder.IsUsingMySQL() ? 128 : PermissionGrantConsts.MaxResourceNameLength; |
|
|
|
var maxResourceKeyLength = builder.IsUsingMySQL() ? 128 : PermissionGrantConsts.MaxResourceKeyLength; |
|
|
|
|
|
|
|
b.Property(x => x.Name).HasMaxLength(PermissionDefinitionRecordConsts.MaxNameLength).IsRequired(); |
|
|
|
b.Property(x => x.ResourceName).HasMaxLength(PermissionGrantConsts.MaxResourceNameLength).IsRequired(); |
|
|
|
b.Property(x => x.ResourceKey).HasMaxLength(PermissionGrantConsts.MaxResourceKeyLength).IsRequired(); |
|
|
|
b.Property(x => x.ResourceName).HasMaxLength(maxResourceNameLength).IsRequired(); |
|
|
|
b.Property(x => x.ResourceKey).HasMaxLength(maxResourceKeyLength).IsRequired(); |
|
|
|
b.Property(x => x.ProviderName).HasMaxLength(PermissionGrantConsts.MaxProviderNameLength).IsRequired(); |
|
|
|
b.Property(x => x.ProviderKey).HasMaxLength(PermissionGrantConsts.MaxProviderKeyLength).IsRequired(); |
|
|
|
|
|
|
|
|