tgstation/IconDiffBot

Microsoft.EntityFrameworkCore.DbUpdateException

buffyuwu opened this issue · 2 comments

Job: https://github.com/FortunaSS13/Fortuna/runs/4234985573

Original PR: FortunaSS13/Fortuna#454

I saw this was 'fixed' in 2019: #53 (comment)

Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xC2\x91\xC3\x83\xC2\xAC...' for column `ss13_icon_diff_bot`.`IconDiffs`.`StateName` at row 254
 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xC2\x91\xC3\x83\xC2\xAC...' for column `ss13_icon_diff_bot`.`IconDiffs`.`StateName` at row 254
   at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 1243
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location where exception was thrown ---
   at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ResultSet.cs:line 42
   at MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 80
   at MySql.Data.MySqlClient.MySqlDataReader.ReadFirstResultSetAsync(IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 303
   at MySql.Data.MySqlClient.MySqlDataReader.CreateAsync(MySqlCommand command, CommandBehavior behavior, ResultSetProtocol resultSetProtocol, IOBehavior ioBehavior) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 296
   at MySqlConnector.Core.TextCommandExecutor.ExecuteReaderAsync(String commandText, MySqlParameterCollection parameterCollection, CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\TextCommandExecutor.cs:line 52
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues, 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(DbContext _, ValueTuple`2 parameters, CancellationToken cancellationToken)
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IReadOnlyList`1 entriesToSave, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
   at IconDiffBot.Core.PayloadProcessor.HandleResults(PullRequest pullRequest, Int64 installationId, Int64 checkRunId, List`1 diffResults, IServiceScope scope, IDatabaseContext databaseContext, CancellationToken cancellationToken)
   at IconDiffBot.Core.PayloadProcessor.GenerateDiffs(PullRequest pullRequest, Int64 installationId, Int64 checkRunId, IReadOnlyList`1 changedDmis, IServiceScope scope, CancellationToken cancellationToken)
   at IconDiffBot.Core.PayloadProcessor.<>c__DisplayClass11_0.<<ScanPullRequestImpl>g__RunCheck|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at IconDiffBot.Core.PayloadProcessor.ScanPullRequestImpl(Int64 repositoryId, Int32 pullRequestNumber, Int64 installationId, IServiceScope scope, CancellationToken cancellationToken)

I saw this was 'fixed' in 2019: #53 (comment)

These are entirely different exceptions. This is due to an invalid string being saved, the previous was due to the host running out of storage.

 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xC2\x91\xC3\x83\xC2\xAC...' for column `ss13_icon_diff_bot`.`IconDiffs`.`StateName` at row 254
 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect string value: '\xC2\x91\xC3\x83\xC2\xAC...' for column `ss13_icon_diff_bot`.`IconDiffs`.`StateName` at row 254

One of your icon states has an invalid name.