Number overflow. Attempting to store a number with magnitude larger than supported range

TL;DR — Deine Zahl liegt außerhalb der Limits von DynamoDB. Der N-Typ hält bis zu 38 Stellen Genauigkeit mit einer Größenordnung zwischen etwa 1E-130 und 9.9999…E+125. Ein Wert jenseits dieses Bereichs — oder einer mit mehr als 38 signifikanten Stellen — wird mit einer Exception abgelehnt. Speichere große IDs und hochpräzise Werte als Zeichenketten, nicht als Zahlen.

Was es bedeutet

ValidationException: 1 validation error detected: Number overflow. Attempting to store a number with magnitude larger than supported range

Der Number-Typ von DynamoDB ist eine Dezimalzahl mit begrenztem Bereich und 38 signifikanten Stellen. Diese ValidationException (HTTP 400) bedeutet, dass der von dir gesendete Wert diese Größenordnung überschreitet — oder eine Sprachlaufzeit eine lange numerische Zeichenkette in eine Fließkommazahl verwandelt hat, die den Bereich überlaufen ließ. Er ist nicht wiederholbar als Zahl; der Wert muss anders dargestellt werden.

Warum es passiert

  • Eine tatsächlich riesige Zahl — ein Wert größer als ~9.9E+125 (oder ein positiver Wert mit kleinerer Größenordnung als 1E-130).
  • Eine lange numerische Zeichenkette, die zu einem Float geparst wurde — z. B. wird eine 120-stellige Konto-/Referenznummer, die durch Number() / parseFloat() läuft, zu etwas wie 8.04e+126 und läuft über. Das ist ein häufiger realer Auslöser.
  • Mehr als 38 signifikante Stellen — der Number-Typ von DynamoDB hält bis zu 38 Stellen Genauigkeit, und diese zu überschreiten führt zu einer Exception.
  • Ein berechneter Wert (ein Produkt, eine Potenzierung), der über den Bereich hinausgewachsen ist.

So behebst du es

  1. Speichere ihn als Zeichenkette (S), nicht als Zahl. Große Bezeichner, Kontonummern oder Hashes, mit denen du nie rechnest, sollten Zeichenketten sein — das umgeht sowohl das Größenordnungslimit als auch die 38-Stellen-Genauigkeitsgrenze.
  2. Parse ID-artige Zeichenketten nicht zu Zahlen — behalte eine 100-stellige Referenz durchgehend als Zeichenkette. Sie zu einem Float zu parsen ist genau das, was den Overflow erzeugt.
  3. Halte numerische Attribute innerhalb des Bereichs — DynamoDB Number unterstützt bis zu 38 Stellen Genauigkeit und eine Größenordnung bis ~9.9E+125. Gestalte Werte so, dass sie hineinpassen, oder teile/skaliere sie.
  4. Übergib bei hochpräzisen Dezimalzahlen die Zahlen als Zeichenketten, die du aus deinem Dezimaltyp konvertierst (Python Decimal, eine Big-Decimal-Bibliothek), damit keine Genauigkeit verloren geht, bevor sie DynamoDB erreicht.
  5. Bewahre führende Nullen / Exaktheit, indem du als Zeichenkette speicherst — der Number-Typ normalisiert und kann führende Nullen ohnehin nicht behalten.

FAQ

Was sind die Zahlenlimits von DynamoDB? Der Number-Typ unterstützt bis zu 38 Stellen Genauigkeit und eine Größenordnung von etwa 1E-130 bis 9.9999999999999999999999999999999999999E+125 (positiv) und die Negativen davon. Ein Wert außerhalb dieses Bereichs löst "Number overflow" aus.

Wie speichere ich eine sehr große Zahl in DynamoDB? Speichere sie als Zeichenketten-Attribut (S) statt als Number (N), wenn du keine Arithmetik damit ausführst — das vermeidet die 38-Stellen-Genauigkeitsgrenze und das Größenordnungslimit vollständig. Für sortierbare numerische Zeichenketten fülle sie mit Nullen auf, damit die lexikalische Reihenfolge der numerischen entspricht.

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.