Databasfel relaterade till max_allowed_packet på Adobe Commerce
Den här artikeln innehåller en lösning för databasanslutningsfel i var/log/exception.log
som kan uppstå när ett stort antal produkter importeras eller en annan åtgärd som tvingar servern att hantera större paket än vad som angetts i max_allowed_packet
som är större än standardvärdet, 16 MB.
Berörda produkter och versioner
- Adobe Commerce lokalt, alla versioner som stöds
Problem
När en MySQL-klient eller mysqld-servern tar emot ett paket som är större än max_allowed_package byte, genereras ett ER_NET_PACKET_TOO_LARGE -fel (som visas i exception.log
) och anslutningen stängs. Med vissa klienter kan du även få en borttappad anslutning till MySQL-servern under ett fråge-fel om kommunikationspaketet är för stort.
Steg som ska återskapas
En mängd olika uppgifter kan ge upphov till det här problemet. Det kan vara att försöka importera ett stort antal produkter till Adobe Commerce eller transaktionsfrågor som skickar tillbaka för mycket data. Resultatet är databasanslutningsfel i var/log/exception.log
och andra problem, till exempel att produkter inte kan importeras.
Orsak
Standardvärdet 16 MB för inställningen MySQL max_allowed_packets
är inte tillräckligt stort för dina behov.
Lösning
-
Identifiera frågor där de enskilda raderna överskrider den aktuella
max_allowed_packet
-gränsen. Sådana frågor måste skrivas om för att minska mängden data som returneras. Detta kan du göra genom att ha ett mindre antal kolumner i programsatsenSELECT
eller välja en mindre datatyp för olika kolumner som en del av tabelldesignen. Om du har ett New Relic-konto använder du New Relic APM-felsida och New Relic APM-databaser samt New Relic-loggar för att söka efter relevanta frågor. -
För att åtgärda detta snabbt kan du tillfälligt begära att storleken på
max_allowed_packet
ökas när du skickar in en biljett, men det är kundkonstruktörsteamets val, eftersom ett för stort värde kan orsaka replikeringsfel genom att orsaka nätverksproblem. -
Det är en god idé att köra följande kommando i CLI för några av de stora databastabellerna:
code language-none show table status like [table name to match]
Utvärdera de frågor som körs i de här tabellerna för att avgöra om du överskrider den rekommenderade storleken på
max_allowed_packet
på 16 MB. Följ samma process i steg ett för att minska antalet data som returneras av sådana frågor.
Relaterad läsning
- Lokal installationsöversikt i utvecklardokumentationen.
- Databasöverföringen förlorar anslutningen till MySQL i vår kunskapsbas för support.
- Databasera bästa praxis för Adobe Commerce i molninfrastruktur i vår kunskapsbas för support.
- Bästa tillvägagångssätt för att lösa databasprestandaproblem i vår kunskapsbas för support.
- Metodtips för att ändra databastabeller i Commerce Implementeringspellbook