Neu Shopify Connector Fehler bezüglich "unique key" bei den Kategorien

jtl_user_x

Aktives Mitglied
6. März 2023
54
5
Der Shopify Connector spuckt seit heute früh einen Fehler aus bezüglich "unique key" bei den Kategorien. Leider sind wir nicht selbst Admins des Shopify Shops, daher können wir da nicht direkt rein schauen.
Hat jemand eine Idee, was wir da machen können?


Code:
Unbehandelte Ausnahme #959190594F6282F vom Typ System.Exception in
System.Exception: Artikel-Empfangen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Verletzung der UNIQUE KEY-Einschränkung "UQ_dbo_tkategorieartikel_kArtikel_kKategorie". Ein doppelter Schlüssel kann in das dbo.tkategorieartikel-Objekt nicht eingefügt werden. Der doppelte Schlüsselwert ist (4393, 15610).
Die Anweisung wurde beendet.
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   bei System.Data.SqlClient.SqlDataReader.TrySetMetaData(_SqlMetaDataSet metaData, Boolean moreInfo)
   bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   bei JTL.Database.DbCommandHelpers.ExecuteReader(IDbCommand command, CancellationToken cancellationToken, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.DbCommandExtensionsType.Query[T](IDbCommand command, IColumnMapper mapper, IResultSetReaderStrategy multipleResultSets, CancellationToken cancellationToken, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.DbConnectionExtensionsType.<>c__DisplayClass7_0`1.<Query>b__0()
   bei JTL.Database.DbConnectionHelpers.Execute[T](IDbConnection connection, Func`1 func, Boolean keepAlive)
   bei JTL.Database.DbConnectionExtensionsType.Query[T](IDbConnection connection, IDbCommand command, DbQueryParameters queryParameters, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.Commands.Entities.IdentityCreateCommand.ExecuteChunk(IDatabaseConnection connection, Int32 startOfLastChunk, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.Commands.Entities.CreateCommandBase.Execute(IDatabaseConnection connection, Int32 timeout, DbLoggingOptions logging)
   bei jtlDatabase.jtlObjectRepositoryBase.CSjqhBZPG4(IEnumerable`1  , Type  , Int32  , DbLoggingOptions  )
   bei jtlDatabase.jtlObjectRepositoryBase.<>c__DisplayClass5_0.<Create>b__1(IGrouping`2 group)
   bei System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   bei System.Linq.Enumerable.Sum(IEnumerable`1 source)
   bei jtlDatabase.jtlObjectRepositoryBase.Create(IEnumerable`1 items, Int32 timeout, DbLoggingOptions logging)
   bei jtlDatabase.jtlObject.insertInDB()
   bei jtlDatabase.jtlObject.Save()
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.eLxqPeWqN9P(Int32  )
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.Save(List`1 products, List`1& exceptions)
   bei jtlDatabase.classes.ConnectorClasses.Saver.Save(IEnumerable`1 items, jtlShop shop, List`1& exceptions)
   bei jtlCore.ControllerClasses.Connector.Abgleich.Funktionen.ConnectorPuller.Pull[TEntity](Int64 quantity)




2025-05-24T20:32:28 DEBUG - Dauer: 11ms, AffectedRows: 0
2025-05-24T20:32:28 DEBUG - SELECT * FROM [teigenschaftwert] WHERE [kEigenschaft] = @kEigenschaft
@kEigenschaft = 219
2025-05-24T20:32:28 DEBUG - Dauer: 0ms, (bis zum Reader)
2025-05-24T20:32:28 DEBUG - Dauer: 1ms, 28 Zeilen
2025-05-24T20:32:28 DEBUG -
IF(OBJECT_ID('tempdb..#ConnectorEigenschaftWertSprache') IS NOT NULL)
BEGIN
    DROP TABLE #ConnectorEigenschaftWertSprache;
END;
CREATE TABLE #ConnectorEigenschaftWertSprache(kEigenschaftWert INT, kSprache INT, cName NVARCHAR(255));

INSERT INTO #ConnectorEigenschaftWertSprache(kEigenschaftWert, kSprache, cName)
SELECT  ConnectorEigenschaftWertSprache.ID.value('kEigenschaftWert[1]', 'INT'),
        ConnectorEigenschaftWertSprache.ID.value('kSprache[1]', 'INT'),
        ConnectorEigenschaftWertSprache.ID.value('cName[1]', 'NVARCHAR(255)')
FROM @xConnectorEigenschaftWertSprache.nodes('ConnectorEigenschaftWertSprache') AS ConnectorEigenschaftWertSprache(ID)
LEFT JOIN dbo.tEigenschaftWertSprache ON dbo.tEigenschaftWertSprache.kEigenschaftWert = ConnectorEigenschaftWertSprache.ID.value('kEigenschaftWert[1]', 'INT')
        AND dbo.tEigenschaftWertSprache.kSprache = ConnectorEigenschaftWertSprache.ID.value('kSprache[1]', 'INT')
WHERE dbo.tEigenschaftWertSprache.kEigenschaftWert IS NULL;

INSERT INTO dbo.tEigenschaftWertSprache(kEigenschaftWert, kSprache, cName)
SELECT #ConnectorEigenschaftWertSprache.kEigenschaftWert, #ConnectorEigenschaftWertSprache.kSprache, MAX(#ConnectorEigenschaftWertSprache.cName)
FROM #ConnectorEigenschaftWertSprache
GROUP BY #ConnectorEigenschaftWertSprache.kEigenschaftWert, #ConnectorEigenschaftWertSprache.kSprache;
@xConnectorEigenschaftWertSprache = '<ConnectorEigenschaftWertSprache>
  <kEigenschaftWert>85115</kEigenschaftWert>
  <kSprache>1</kSprache>
  <cName>Weiß</cName>
</ConnectorEigenschaftWertSprache>'
2025-05-24T20:32:28 DEBUG - Dauer: 28ms, AffectedRows: 2
2025-05-24T20:32:28 DEBUG - SELECT * FROM [tArtikelBeschreibung] WHERE [kArtikel] = @kArtikel
@kArtikel = 4393
2025-05-24T20:32:28 DEBUG - Dauer: 0ms, (bis zum Reader)
2025-05-24T20:32:28 DEBUG - Dauer: 1ms, 2 Zeilen
2025-05-24T20:32:28 DEBUG - SELECT * FROM [tArtikelBeschreibung] WHERE [kArtikel] = @kArtikel
@kArtikel = 4393
2025-05-24T20:32:28 DEBUG - Dauer: 0ms, (bis zum Reader)
2025-05-24T20:32:28 DEBUG - Dauer: 1ms, 2 Zeilen
2025-05-24T20:32:28 DEBUG - SELECT * FROM [tkategorie] WHERE [kKategorie] = @kKategorie
@kKategorie = 15610
2025-05-24T20:32:28 DEBUG - Dauer: 0ms, (bis zum Reader)
2025-05-24T20:32:28 DEBUG - Dauer: 0ms, 1 Zeilen
2025-05-24T20:32:28 DEBUG - DECLARE @Identities TABLE (Id INT NOT NULL);
INSERT INTO [dbo].[tkategorieartikel] ([kArtikel], [kKategorie]) OUTPUT INSERTED.[kKategorieArtikel] AS [Id] INTO @Identities VALUES (@kArtikel, @kKategorie);
SELECT [Id] FROM @Identities ORDER BY [Id];

@kArtikel = 4393
@kKategorie = 15610
2025-05-24T20:32:28 WARN - Dauer: 3ms, Error: Verletzung der UNIQUE KEY-Einschränkung "UQ_dbo_tkategorieartikel_kArtikel_kKategorie". Ein doppelter Schlüssel kann in das dbo.tkategorieartikel-Objekt nicht eingefügt werden. Der doppelte Schlüsselwert ist (4393, 15610).
Die Anweisung wurde beendet.
2025-05-24T20:32:28 ERROR - Artikel-Empfangen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Verletzung der UNIQUE KEY-Einschränkung "UQ_dbo_tkategorieartikel_kArtikel_kKategorie". Ein doppelter Schlüssel kann in das dbo.tkategorieartikel-Objekt nicht eingefügt werden. Der doppelte Schlüsselwert ist (4393, 15610).
Die Anweisung wurde beendet.
   bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   bei System.Data.SqlClient.SqlDataReader.TrySetMetaData(_SqlMetaDataSet metaData, Boolean moreInfo)
   bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   bei System.Data.SqlClient.SqlDataReader.get_MetaData()
   bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   bei JTL.Database.DbCommandHelpers.ExecuteReader(IDbCommand command, CancellationToken cancellationToken, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.DbCommandExtensionsType.Query[T](IDbCommand command, IColumnMapper mapper, IResultSetReaderStrategy multipleResultSets, CancellationToken cancellationToken, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.DbConnectionExtensionsType.<>c__DisplayClass7_0`1.<Query>b__0()
   bei JTL.Database.DbConnectionHelpers.Execute[T](IDbConnection connection, Func`1 func, Boolean keepAlive)
   bei JTL.Database.DbConnectionExtensionsType.Query[T](IDbConnection connection, IDbCommand command, DbQueryParameters queryParameters, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.Commands.Entities.IdentityCreateCommand.ExecuteChunk(IDatabaseConnection connection, Int32 startOfLastChunk, Int32 timeout, DbLoggingOptions logging)
   bei JTL.Database.Commands.Entities.CreateCommandBase.Execute(IDatabaseConnection connection, Int32 timeout, DbLoggingOptions logging)
   bei jtlDatabase.jtlObjectRepositoryBase.CSjqhBZPG4(IEnumerable`1  , Type  , Int32  , DbLoggingOptions  )
   bei jtlDatabase.jtlObjectRepositoryBase.<>c__DisplayClass5_0.<Create>b__1(IGrouping`2 group)
   bei System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   bei System.Linq.Enumerable.Sum(IEnumerable`1 source)
   bei jtlDatabase.jtlObjectRepositoryBase.Create(IEnumerable`1 items, Int32 timeout, DbLoggingOptions logging)
   bei jtlDatabase.jtlObject.insertInDB()
   bei jtlDatabase.jtlObject.Save()
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.eLxqPeWqN9P(Int32  )
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.Save(List`1 products, List`1& exceptions)
   bei jtlDatabase.classes.ConnectorClasses.Saver.Save(IEnumerable`1 items, jtlShop shop, List`1& exceptions)
   bei jtlCore.ControllerClasses.Connector.Abgleich.Funktionen.ConnectorPuller.Pull[TEntity](Int64 quantity)
 

jtl_user_x

Aktives Mitglied
6. März 2023
54
5
Problem ist außerdem, dass die besagte Kategorie aus der Fehlermeldung "15610" einer Kategorie entspricht, die ich links in den Kategorien nicht finde, die mir aber im Connector angezeigt wird. Siehe rote Umrandung.
Diese Kategorie müsste ich wahrscheinlich löschen bzw alle darin befindlichen Artikel weg bewegen in eine temporäre neue Kategorie, bevor ich den Connector resette (Shopify Connector zurücksetzen Funktion) und damit alle Artikel und Kategorien aus Shopify neu reinhole. Aber da die Kategorie links fehlt, geht das nicht.

Ist die Kategorie Connector Import ohne Kat bei D2C, so wie bei B2B als Knoten innerhalb der Kategorie. Das fehlt bei D2C, aber irgendwie ist sie wohl doch da. In der SQL DB würde ich sie bestimmt finden.



1.jpg

2.jpg
 

jtl_user_x

Aktives Mitglied
6. März 2023
54
5
Nachtrag:

Habe mit dem SMSS SQL Management Studio die fehlerhafte Kategorie in eine leere bereits verfügbare Kategorie verschoben indem ich die ID der Kategorie verändert habe direkt im SQL und auf eine andere „Hauptkategorie“ gesetzt habe, die nicht mehr benötigt ist, dann wurde sie im Baum angezeigt.

Konnte sie dann löschen (vorher alle darin befindlichen Artikel weg bewegen) und jetzt importiert er wieder korrekt (bisher jedenfalls….!)
 
  • Gefällt mir
Reaktionen: no80

Ähnliche Themen