为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
net8.0 mysql迁移dm8
【问题描述】
Exception thrown: 'System.InvalidCastException' in System.Private.CoreLib.dll
[18:06:58 ERR] │ Failed executing DbCommand (118ms) [Parameters=[:p0='?' (Size = 50), :p1='?' (Size = 20), :p2='?' (DbType = DateTime2), :p3='?' (DbType = Guid), :p4='?' (DbType = Boolean), :p5='?' (Size = 20), :p6='?' (DbType = DateTime2), :p7='?' (DbType = Guid), :p8='?' (Size = 20), :p9='?' (DbType = Guid), :p10='?' (DbType = Int64), :p11='?' (Size = 50), :p12='?' (Size = 50)], CommandType='Text', CommandTimeout='0']
INSERT INTO "account" ("Code", "CrtName", "CrtTime", "CrtUuid", "IsSa", "MdfName", "MdfTime", "MdfUuid", "Name", "Uuid", "Version", "Password", "Salt")
VALUES (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12);
SELECT "Id"
FROM "account"
WHERE sql%ROWCOUNT = 1 AND "Id" = scope_identity();
fail: 2025/2/24 18:06:58.384 RelationalEventId.CommandError[20102] (Microsoft.EntityFrameworkCore.Database.Command)
Failed executing DbCommand (118ms) [Parameters=[:p0='?' (Size = 50), :p1='?' (Size = 20), :p2='?' (DbType = DateTime2), :p3='?' (DbType = Guid), :p4='?' (DbType = Boolean), :p5='?' (Size = 20), :p6='?' (DbType = DateTime2), :p7='?' (DbType = Guid), :p8='?' (Size = 20), :p9='?' (DbType = Guid), :p10='?' (DbType = Int64), :p11='?' (Size = 50), :p12='?' (Size = 50)], CommandType='Text', CommandTimeout='0']
INSERT INTO "account" ("Code", "CrtName", "CrtTime", "CrtUuid", "IsSa", "MdfName", "MdfTime", "MdfUuid", "Name", "Uuid", "Version", "Password", "Salt")
VALUES (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12);
SELECT "Id"
FROM "account"
WHERE sql%ROWCOUNT = 1 AND "Id" = scope_identity();
[18:06:58 ERR] │ An exception occurred in the database while saving changes for context type 'JoinSaas.Account.Repo.AccountSvcContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> System.InvalidCastException: not support this GUID cast
at Dm.DmCommand.BindParameters(Int32& rowCount, DmDataReader rd, CommandBehavior behavior)
at Dm.DmCommand.do_ExecuteDbDataReader(CommandBehavior behavior)
at Dm.DmCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
--- End of stack trace from previous location ---
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.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.Storage.ExecutionStrategy.<>c__DisplayClass30_0`2.<<ExecuteAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, 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.
---> System.InvalidCastException: not support this GUID cast
at Dm.DmCommand.BindParameters(Int32& rowCount, DmDataReader rd, CommandBehavior behavior)
at Dm.DmCommand.do_ExecuteDbDataReader(CommandBehavior behavior)
at Dm.DmCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
--- End of stack trace from previous location ---
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.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.Storage.ExecutionStrategy.<>c__DisplayClass30_0`2.<<ExecuteAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState,TResult](Func`4 operation, Func`4 verifySucceeded, TState state, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
fail: 2025/2/24 18:06:58.783 CoreEventId.SaveChangesFailed[10000] (Microsoft.EntityFrameworkCore.Update)
An exception occurred in the database while saving changes for context type 'JoinSaas.Account.Repo.AccountSvcContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> System.InvalidCastException: not support this GUID cast
at Dm.DmCommand.BindParameters(Int32& rowCount, DmDataReader rd, CommandBehavior behavior)
at Dm.DmCommand.do_ExecuteDbDataReader(CommandBehavior behavior)
at Dm.DmCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
迁移前
迁移后
可以试试加个连接串参数varchar36ToGuid
参考这个回答https://eco.dameng.com/community/question/4573c660cee2fa350a12d30e75398c0c
字段以varchar(36 char)字符为单位时会报错,创建varchar(36)类型的字段不会报错。