Condividi
Error 1264: out of range value for column - fix
In MySql ho impostato una colonna come tipo intero (integer) di lunghezza 10, in questo modo:
my_column integer(10) NOT NULL,
non appena però cerco d'inserire un valore all'interno di questo campo con una insert in questo modo:
INSERT INTO my_Table (my_column) VALUES ('3235977883');
ottengo questo messaggio di errore da parte di MySql:
`error 1264` out of value for column
Come mai compare questo errore? Non mi sembra che vi siano errori nella insert né tanto meno nella dichiarazione del tipo, qualcuno potrebbe aiutarmi, grazie.
Risolta
1
MySql
08-03-2020
2 Risposte
1951 Visite
+2
Risposte ( 2 approvate )
il valore che tu stai cercando d'inserire
3235977883
è più grande del massimo valore accettabile per il tipo interoINT
in MySql che è2147483647.
Ecco perché ricevi quell'errore 1264 di "out of value", perché eccedi la dimensione massima. Per risolvere l'errore potresti contrassegnare il tuo campo
INT
conUNSIGNED
così da raddoppiare il limite massimo superiore accettabile, che diverrebbe di4294967295
, oppure dovresti utilizzare il tipoBIG INT
, però fai attenzione nella scelta di quest'ultimo poiché se non necessario andresti a sprecare un sacco di memoria.Il perché dell'errore 1264 è proprio quello indicato da Michele Ladonia, potrei ulteriormente suggerire di utilizzare eventualmente anche un campo stringa piuttosto che un big int, a meno che tu non stia realizzando un applicativo di tipo scientifico mi sembra improbabile che tu abbia esigenze di trattare numeri così grandi, probabilmente si tratta di un numero telefonico che puoi trattare benissimo come una stringa (una sequenza di caratteri alfanumerici) con il tipo
VARCHAR
, ed evitarè così uno spreco enorme di memoria di archiviazione del dato.Inoltre quando dichiari il tipo INT e ne specifichi il valore 10,
integer(10)
, quel 10 non sta ad indicare la dimensione dell'intero, piuttosto rappresenta la sua 'larghezza' di visualizzazione o rappresentazione se preferisci, facciamo attenzione a non confondere le due cose, errore che vedo fare molto spesso.