DokumentationCommerceCommerce-Wissensdatenbank

Numerischer Adobe Commerce-Datenbankwert außerhalb des Bereichs, INT bis BIGINT

Letzte Aktualisierung: 5. Mai 2025
  • Themen:

Erstellt für:

  • Entwickler
WARNING
Vor der Implementierung der Lösung in diesem Artikel (INT zur Aktualisierung BIGINT Schemas) müssen Händler immer überprüfen, ob das Feld, das sie ändern werden, KEINE Fremdschlüsselbeziehungen zu einer anderen Tabelle aufweist. Wenn das Feld Fremdschlüsselbeziehungen zu einer anderen Tabelle hat, treten Probleme auf, da das zugehörige Feld weiterhin INT ist. Sie können die folgende Abfrage verwenden, um dies zu überprüfen. Diese Abfrage listet die Fremdschlüsselbeziehungen auf, die in der Datenbank für das angegebene Tabellenfeld verfügbar sind:
SELECT
     TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
   INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
     REFERENCED_TABLE_SCHEMA = '<database_name>' AND
     REFERENCED_TABLE_NAME = '<table_name>' AND
     REFERENCED_COLUMN_NAME = '<table_field>';

Betroffene Produkte und Versionen

  • Adobe Commerce (alle Bereitstellungsmethoden) - alle unterstützten Versionen

Dieser Artikel bietet Lösungen für Fälle, in denen Sie eine Produktaktualisierung nicht speichern können, z. B. eine Preisänderung oder das Löschen und Duplizieren eines Produkts.
Möglicherweise wird die Fehlermeldung angezeigt Das Lagerelement konnte nicht gespeichert werden. Bitte erneut versuchen. Die Bereitstellung kann nach einer Produktaktualisierung fehlschlagen. Möglicherweise wird auch die folgende MySQL-Fehlermeldung beim Ausführen von php bin/magento setup:upgrade angezeigt (in Adobe Commerce in der Cloud-Infrastruktur wird dieser Fehler in den Bereitstellungsprotokollen angezeigt):

SQLSTATE[22003]: Numeric value out of range: 167 Out of range value for column 'value_id' at row 1, query was: INSERT INTO `catalog_product_entity_decimal` (`attribute_id`,`store_id`,`row_id`,`value`) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `attribute_id` = VALUES(`attribute_id`), `store_id` = VALUES(`store_id`), `row_id` = VALUES(`row_id`), `value` = VALUES(`value`)

Die im Artikel beschriebenen Lösungen sind:

  • Aktualisieren Sie die [ AUTO_INCREMENT ] auf den nächsten Wert aus der Tabelle oder
  • Aktualisierung des BIGINT-Schemas INT

Welche Lösung Sie verwenden, hängt von der Ursache des Problems ab. Gehen Sie wie folgt vor, um die Ursache zu isolieren.

Schritte zur Prüfung der Ursache

Überprüfen Sie den höchsten Wert des Primärschlüssels, indem Sie den folgenden Befehl am Terminal ausführen: SELECT MAX(value_id) FROM catalog_product_entity_int;

Wenn der max(value_id) kleiner als der max int(11) [ 4294967296 ] ist und der [ AUTO_INCREMENT ] einen Wert größer oder gleich dem max int(11) [ 4294967296 ] hat, Sie (den [ AUTO_INCREMENT ] auf den nächsten Wert aus der Tabelle aktualisieren. Andernfalls sollten Sie eine INT zur Aktualisierung BIGINT Schemas.

Aktualisieren Sie die AUTO_INCREMENT auf den nächsten Wert aus der Tabelle.

WARNING
Führen Sie eine Datenbanksicherung durch, bevor Sie die Tabellen ändern. Setzen Sie die Site auch in den Wartungsmodus. Darüber hinaus wird empfohlen, den Befehl MySQL optimieren für die Datenbanktabellen (nur für Tabellen, in denen Änderungen vorgenommen wurden) auszuführen, nachdem die Änderungen vorgenommen wurden.
NOTE
Die Site sollte sich im Wartungsmodus befinden, während der Befehl „optimieren“ für bestimmte Tabellen ausgeführt wird. Dadurch werden Tabellen vollständig neu erstellt und nach dem Löschen von Daten aus Tabellen Speicherplatz freigegeben.

Wenn der angezeigte Wert kleiner als max int(11) [ 4294967296 ] ist, wie in der folgenden Beispiel-Terminalausgabe gezeigt, dann hat sich eine [ AUTO_INCREMENT ] in eine Zahl geändert, die größer oder gleich dem max [ int(11) ] ist.

MariaDB [xxx]> SELECT MAX(value_id) FROM catalog_product_entity_int;
+---------------------+
| MAX(source_item_id) |
+---------------------+
|          4283174130 |
+---------------------+

Um zu überprüfen, ob dies geschehen ist, führen Sie den folgenden Befehl im Terminal aus:

MariaDB [xxx]> show create table catalog_product_entity_int;

...
) ENGINE=InnoDB AUTO_INCREMENT=4294967297 DEFAULT CHARSET=utf8 COMMENT='Catalog Product Integer Attribute Backend Table';

Wie Sie in der obigen Beispielausgabe sehen können, hat sich die Tabelle [ AUTO_INCREMENT ] in eine größere Zahl geändert als die max int(11) [ 4294967296 ]. Die Lösung besteht darin, die [ AUTO_INCREMENT] auf den nächsten Wert aus der Tabelle zu aktualisieren:

ALTER TABLE catalog_product_entity_int AUTO_INCREMENT = 4283174131;

Aktualisierung des BIGINT-Schemas INT

Wenn jedoch beim Ausführen der folgenden Abfrage SELECT MAX(value_id) FROM catalog_product_entity_int; der angezeigte Wert höher ist als max int(11) [ 4294967296 ] eine INT zur BIGINT Schemaaktualisierung in Betracht ziehen. Der Datentyp BIGINT hat einen größeren Wertebereich.

Gehen Sie dazu folgendermaßen vor:

  1. Erstellen Sie ein benutzerdefiniertes Modul im Verzeichnis app/code/.
  2. Erstellen Sie im benutzerdefinierten Modul eine Datei db_schema.xml. In db_schema.xml Sie den Datentyp auf BIGINT festlegen.
  3. Fügen Sie den folgenden Inhalt hinzu und führen Sie dann bin/magento setup:upgrade aus, um die oben genannten Änderungen auf die entsprechende Tabelle anzuwenden.
<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
    <table name="catalog_product_entity_int">
        <column xsi:type="bigint" name="value_id" unsigned="false" nullable="false" identity="true"
                comment="Value ID"/>
    </table>
</schema>

Verwandtes Lesen

  • Allgemein MySQL Richtlinien im Commerce-Installationshandbuch
  • Datenbank-Upload verliert Verbindung zu MySQL in unserer Support-Wissensdatenbank
  • Best Practices für Datenbanken für Adobe Commerce auf CloudInfrastruktur in unserer Support-Wissensdatenbank
  • Häufigste Datenbankprobleme in Adobe Commerce auf Cloud-Infrastruktur in unserer Support-Wissensdatenbank
  • Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a