Numerieke waarde Adobe Commerce-database buiten bereik, INT
tot BIGINT
INT
tot BIGINT
schema-update), moeten handelaren altijd controleren of het veld dat zij gaan wijzigen GEEN relaties met een andere tabel met een externe sleutel heeft. Als het veld geen relaties met externe sleutels heeft met een andere tabel, zullen er problemen optreden omdat het verwante veld nog steeds INT
is. Zij kunnen de volgende vraag gebruiken om dit te verifiëren. Deze vraag maakt een lijst van de buitenlands-zeer belangrijke verhoudingen beschikbaar in het gegevensbestand voor het bepaalde lijstgebied:code language-mysql |
---|
|
Betrokken producten en versies
- Adobe Commerce (alle plaatsingsmethodes) alle gesteunde versies
Dit artikel biedt oplossingen als u een productupdate niet kunt opslaan, zoals een prijswijziging, of een product kunt verwijderen en dupliceren.
U kunt het foutenbericht zien het voorraadpunt kon niet worden bewaard. Probeer het opnieuw. Mogelijk kunt u niet implementeren na een productupdate. Het volgende MySQL foutbericht wordt ook weergegeven wanneer u php bin/magento setup:upgrade
uitvoert (in Adobe Commerce op de cloud-infrastructuur wordt deze fout weergegeven in de implementatielogboeken):
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`)
De oplossingen die in het artikel worden beschreven zijn:
- Werk de
[ AUTO_INCREMENT ]
bij naar de volgende waarde in de tabel of INT
naarBIGINT
schema-update
Welke oplossing u gebruikt hangt van af wat de kwestie heeft veroorzaakt. Raadpleeg de onderstaande stappen om de oorzaak te isoleren.
Stappen om de oorzaak te controleren
Controleer de hoogste waarde van de primaire sleutel door de volgende opdracht in de terminal uit te voeren: SELECT MAX(value_id) FROM catalog_product_entity_int;
Als max(value_id)
lager is dan max int(11) [ 4294967296 ]
, en [ AUTO_INCREMENT ]
een waarde groter dan of gelijk aan max int(11) [ 4294967296 ]
heeft, dan denk na bijwerkt [ AUTO_INCREMENT ]
aan de volgende waarde van de lijst. Anders, overweeg a INT
aan BIGINT
schemaupdate.
De AUTO_INCREMENT
bijwerken naar de volgende waarde in de tabel update-the-auto-increment-to-the-next-value-from-the-table
Als de getoonde waarde lager is dan max int(11) [ 4294967296 ]
, zoals in het onderstaande voorbeeld wordt getoond, is de einduitvoer van een tabel [ AUTO_INCREMENT ]
gewijzigd in een getal dat groter of gelijk is aan de max [ int(11) ]
-waarde.
MariaDB [xxx]> SELECT MAX(value_id) FROM catalog_product_entity_int;
+---------------------+
| MAX(source_item_id) |
+---------------------+
| 4283174130 |
+---------------------+
Om te controleren of dit is voorgekomen, stel het volgende bevel in de terminal in werking:
MariaDB [xxx]> show create table catalog_product_entity_int;
...
) ENGINE=InnoDB AUTO_INCREMENT=4294967297 DEFAULT CHARSET=utf8 COMMENT='Catalog Product Integer Attribute Backend Table';
Zoals u in het bovenstaande voorbeeld kunt zien, is de tabel [ AUTO_INCREMENT ]
gewijzigd in een groter getal dan de max int(11) [ 4294967296 ]
. U kunt de [ AUTO_INCREMENT]
bijwerken naar de volgende waarde in de tabel:
ALTER TABLE catalog_product_entity_int AUTO_INCREMENT = 4283174131;
INT
naar BIGINT
schema-update int_to_bigint_schema_update
Als de volgende query SELECT MAX(value_id) FROM catalog_product_entity_int;
wordt uitgevoerd, is de weergegeven waarde echter hoger dan max int(11) [ 4294967296 ]
u kunt overwegen een schema-update INT
uit te voeren naar BIGINT
. Het datatype BIGINT
heeft een groter waardenbereik.
Daartoe:
- Creeer een douanemodule binnen de app/code/ folder.
- In de douanemodule creeert a db_schema.xml. In db_schema.xml zult u datatype aan
BIGINT
plaatsen. - Voeg de volgende inhoud toe en voer vervolgens
bin/magento setup:upgrade
uit om de bovenstaande wijzigingen toe te passen op de corresponderende tabel.
<?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>
Gerelateerde lezing
- Algemene MySQL richtlijnenin de Gids van de Installatie van Commerce
- uploadt het Gegevensbestand verliest verbinding aan MySQLin onze basis van de steunkennis
- beste praktijken van het Gegevensbestand voor Adobe Commerce op wolkeninfrastructuurin onze basis van de steunkennis
- gemeenschappelijkste gegevensbestandkwesties in Adobe Commerce op wolkeninfrastructuurin onze basis van de steunkennis
- Beste praktijken voor het wijzigen van gegevensbestandlijstenin het Playbook van de Implementatie van Commerce