-
Notifications
You must be signed in to change notification settings - Fork 28
Description
Bug Report
YDB dotnet SDK version:
Ydb.Sdk 0.24.0
EntityFrameworkCore.Ydb version:
0.1.0
Environment
macOS
dotnet 9.0.101
arm
Current behavior:
При попытке выполнить сидинг данных через EF Core миграции возникает ошибка, связанная с обязательным not null полем EmailConfirmed. Хотя в миграции для этого поля указано значение по умолчанию (defaultValue: false), во время выполнения INSERT возникает ошибка:
Error: Missing not null column in input: EmailConfirmed. All not null columns should be initialized.
Expected behavior:
Миграции и сидинг данных успешно выполняются, если столбец имеет значение по умолчанию и не передаётся явно.
Steps to reproduce:
- Настройте проект на .NET 9 с Microsoft.EntityFrameworkCore 9.0.5, EntityFrameworkCore.Ydb 0.1.0 и Ydb.Sdk 0.24.0
- Создайте сущность пользователя и миграцию (пример структуры таблицы ниже)
- Выполните миграцию и попробуйте вставить пользователя без явного указания поля EmailConfirmed
- Получите ошибку о пропущенном not null столбце
Related code:
Конфигурация таблицы из миграции
migrationBuilder.CreateTable(
name: "AbpUsers",
columns: table => new
{
Id = table.Column<Guid>(type: "Uuid", nullable: false),
TenantId = table.Column<Guid>(type: "Uuid", nullable: true),
UserName = table.Column<string>(type: "Text", maxLength: 256, nullable: false),
NormalizedUserName = table.Column<string>(type: "Text", maxLength: 256, nullable: false),
Name = table.Column<string>(type: "Text", maxLength: 64, nullable: true),
Surname = table.Column<string>(type: "Text", maxLength: 64, nullable: true),
Email = table.Column<string>(type: "Text", maxLength: 256, nullable: false),
NormalizedEmail = table.Column<string>(type: "Text", maxLength: 256, nullable: false),
EmailConfirmed = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
PasswordHash = table.Column<string>(type: "Text", maxLength: 256, nullable: true),
SecurityStamp = table.Column<string>(type: "Text", maxLength: 256, nullable: false),
IsExternal = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
PhoneNumber = table.Column<string>(type: "Text", maxLength: 16, nullable: true),
PhoneNumberConfirmed = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
IsActive = table.Column<bool>(type: "Bool", nullable: false),
TwoFactorEnabled = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
LockoutEnd = table.Column<string>(type: "Text", nullable: true),
LockoutEnabled = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
AccessFailedCount = table.Column<int>(type: "Int32", nullable: false, defaultValue: 0)
.Annotation("YdbSerial", true),
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "Bool", nullable: false),
EntityVersion = table.Column<int>(type: "Int32", nullable: false),
LastPasswordChangeTime = table.Column<string>(type: "Text", nullable: true),
ExtraProperties = table.Column<string>(type: "Text", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "Text", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "Timestamp", nullable: false),
CreatorId = table.Column<Guid>(type: "Uuid", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "Timestamp", nullable: true),
LastModifierId = table.Column<Guid>(type: "Uuid", nullable: true),
IsDeleted = table.Column<bool>(type: "Bool", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "Uuid", nullable: true),
DeletionTime = table.Column<DateTime>(type: "Timestamp", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpUsers", x => x.Id);
});Полный лог ошибки
[17:36:22 ERR] Failed executing DbCommand (40ms) [Parameters=[$p0='?' (DbType = Guid), $p1='?', $p2='?' (DbType = DateTime), $p3='?' (DbType = Guid), $p4='?' (DbType = Guid), $p5='?' (DbType = DateTime), $p6='?', $p7='?' (DbType = Int32), $p8='?', $p9='?' (DbType = Boolean), $p10='?' (DbType = DateTime), $p11='?' (DbType = Guid), $p12='?', $p13='?' (DbType = Boolean), $p14='?', $p15='?', $p16='?', $p17='?', $p18='?', $p19='?', $p20='?', $p21='?' (DbType = Boolean), $p22='?', $p23='?' (DbType = Guid), $p24='?'], CommandType='Text', CommandTimeout='0']
INSERT INTO `AbpUsers` (`Id`, `ConcurrencyStamp`, `CreationTime`, `CreatorId`, `DeleterId`, `DeletionTime`, `Email`, `EntityVersion`, `ExtraProperties`, `IsActive`, `LastModificationTime`, `LastModifierId`, `LastPasswordChangeTime`, `LockoutEnabled`, `LockoutEnd`, `Name`, `NormalizedEmail`, `NormalizedUserName`, `PasswordHash`, `PhoneNumber`, `SecurityStamp`, `ShouldChangePasswordOnNextLogin`, `Surname`, `TenantId`, `UserName`)
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24)
RETURNING `AccessFailedCount`,`EmailConfirmed`,`IsDeleted`,`IsExternal`,`PhoneNumberConfirmed`,`TwoFactorEnabled`;
[17:36:22 ERR] An exception occurred in the database while saving changes for context type 'DJurist.Sro.Monitoring.EntityFrameworkCore.MonitoringDbContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> Ydb.Sdk.Ado.YdbException (0x80004005): Status: BadRequest, Issues:
[1030] Error: Type annotation
[0] (26:13) Error: At function: KiWriteTable!
[2032] (26:13) Error: Missing not null column in input: EmailConfirmed. All not null columns should be initialized
at Ydb.Sdk.Ado.YdbDataReader.NextExecPart(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.Init(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.CreateYdbDataReader(IServerStream`1 resultSetStream, Action`1 onNotSuccessStatusCode, YdbTransaction ydbTransaction, CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> Ydb.Sdk.Ado.YdbException (0x80004005): Status: BadRequest, Issues:
[1030] Error: Type annotation
[0] (26:13) Error: At function: KiWriteTable!
[2032] (26:13) Error: Missing not null column in input: EmailConfirmed. All not null columns should be initialized
at Ydb.Sdk.Ado.YdbDataReader.NextExecPart(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.Init(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.CreateYdbDataReader(IServerStream`1 resultSetStream, Action`1 onNotSuccessStatusCode, YdbTransaction ydbTransaction, CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
Unhandled exception. Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> Ydb.Sdk.Ado.YdbException (0x80004005): Status: BadRequest, Issues:
[1030] Error: Type annotation
[0] (26:13) Error: At function: KiWriteTable!
[2032] (26:13) Error: Missing not null column in input: EmailConfirmed. All not null columns should be initialized
at Ydb.Sdk.Ado.YdbDataReader.NextExecPart(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.Init(CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbDataReader.CreateYdbDataReader(IServerStream`1 resultSetStream, Action`1 onNotSuccessStatusCode, YdbTransaction ydbTransaction, CancellationToken cancellationToken)
at Ydb.Sdk.Ado.YdbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Volo.Abp.EntityFrameworkCore.AbpDbContext`1.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository`2.InsertAsync(TEntity entity, Boolean autoSave, CancellationToken cancellationToken)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.Identity.IdentityUserStore.CreateAsync(IdentityUser user, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Identity.UserManager`1.CreateAsync(TUser user)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.Identity.IdentityUserManager.CreateAsync(IdentityUser user, String password, Boolean validatePassword)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.Identity.IdentityDataSeeder.SeedAsync(String adminEmail, String adminPassword, Nullable`1 tenantId, String adminUserName)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at DJurist.Sro.Monitoring.Data.MonitoringDbMigrationService.SeedDataAsync(Tenant tenant) in /Users/arutunan/Repositories/DigitalJurist/djurist.sro.monitoring/aspnet-core/src/DJurist.Sro.Monitoring.Domain/Data/MonitoringDbMigrationService.cs:line 103
at DJurist.Sro.Monitoring.Data.MonitoringDbMigrationService.MigrateAsync() in /Users/arutunan/Repositories/DigitalJurist/djurist.sro.monitoring/aspnet-core/src/DJurist.Sro.Monitoring.Domain/Data/MonitoringDbMigrationService.cs:line 53
at DJurist.Sro.Monitoring.DbMigrator.DbMigratorHostedService.StartAsync(CancellationToken cancellationToken) in /Users/arutunan/Repositories/DigitalJurist/djurist.sro.monitoring/aspnet-core/src/DJurist.Sro.Monitoring.DbMigrator/DbMigratorHostedService.cs:line 36
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__14_1(IHostedService service, CancellationToken token)
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>g__LogAndRethrow|14_3(<>c__DisplayClass14_0&)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at DJurist.Sro.Monitoring.DbMigrator.Program.Main(String[] args) in /Users/arutunan/Repositories/DigitalJurist/djurist.sro.monitoring/aspnet-core/src/DJurist.Sro.Monitoring.DbMigrator/Program.cs:line 28
at DJurist.Sro.Monitoring.DbMigrator.Program.<Main>(String[] args)
Other information:
Может ли быть это связано с тем, что я использую .NET 9, а EntityFrameworkCore.Ydb версии 0.1.0 ориентирован на .NET 8?
Спасибо за помощь!