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

In breve — Il tuo numero è al di fuori dei limiti di DynamoDB. Il tipo N contiene fino a 38 cifre di precisione con una grandezza tra circa 1E-130 e 9.9999…E+125. Un valore oltre quell'intervallo — o uno con più di 38 cifre significative — viene rifiutato con un'eccezione. Memorizza ID grandi e valori ad alta precisione come stringhe, non come numeri.

Cosa significa

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

Il tipo Number di DynamoDB è un decimale con un intervallo delimitato e 38 cifre significative. Questa ValidationException (HTTP 400) significa che il valore che hai inviato supera quella grandezza — o un runtime di linguaggio ha trasformato una lunga stringa numerica in un numero a virgola mobile che ha superato l'intervallo. Non è ripetibile come numero; il valore deve essere rappresentato diversamente.

Perché succede

  • Un numero genuinamente enorme — un valore più grande di ~9.9E+125 (o un valore positivo di grandezza inferiore a 1E-130).
  • Una lunga stringa numerica analizzata in un float — es. un numero di conto/riferimento di 120 cifre passato attraverso Number() / parseFloat() diventa qualcosa come 8.04e+126 e supera l'intervallo. Questo è un trigger frequente nella pratica.
  • Più di 38 cifre significative — il tipo Number di DynamoDB contiene fino a 38 cifre di precisione, e superarlo genera un'eccezione.
  • Un valore calcolato (un prodotto, un'esponenziazione) che è cresciuto oltre l'intervallo.

Come risolverlo

  1. Memorizzalo come stringa (S), non come numero. Grandi identificatori, numeri di conto o hash su cui non fai mai operazioni matematiche dovrebbero essere stringhe — questo aggira sia il limite di grandezza sia il tetto di precisione di 38 cifre.
  2. Non analizzare stringhe simili a ID in numeri — mantieni un riferimento di 100 cifre come stringa end-to-end. Analizzarlo in un float è ciò che produce l'overflow.
  3. Mantieni gli attributi numerici dentro l'intervallo — il Number di DynamoDB supporta fino a 38 cifre di precisione e una grandezza fino a ~9.9E+125. Progetta i valori perché rientrino, o suddividili/scalali.
  4. Per i decimali ad alta precisione, passa i numeri come stringhe che converti dal tuo tipo decimale (Decimal di Python, una libreria big-decimal) così la precisione non venga persa prima di raggiungere DynamoDB.
  5. Preserva gli zeri iniziali / l'esattezza memorizzando come stringa — il tipo Number normalizza e comunque non può mantenere gli zeri iniziali.

FAQ

Quali sono i limiti dei numeri di DynamoDB? Il tipo Number supporta fino a 38 cifre di precisione e una grandezza da circa 1E-130 a 9.9999999999999999999999999999999999999E+125 (positivo) e i negativi di questi. Un valore al di fuori di quell'intervallo genera "Number overflow."

Come memorizzo un numero molto grande in DynamoDB? Memorizzalo come attributo stringa (S) invece che come Number (N) se non ci fai operazioni aritmetiche — questo evita del tutto il tetto di precisione di 38 cifre e il limite di grandezza. Per stringhe numeriche ordinabili, aggiungi zeri iniziali così l'ordine lessicale corrisponda all'ordine numerico.

Errori correlati

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.