Mam kolumnę, która jest ustawiona na int(20)
, gdy próbuję wstawić numer taki jak 622108120237
, mówi, że jest poza zakresem. Czemu?Numer Mysql int (11) poza zakresem
Odpowiedz
int
z MySQL, są przechowywane w 4 bajtów i jako takie mogą zawierać tylko między -2147483648
i 2147483647
.
622108120237
jest większa niż 2147483647
; więc nie pasuje do int
- wygląda na to, że będziesz musiał użyć bigint
.
Przeczytaj o tym w podręczniku MySQL rozdział Datatypes - Numeric types z
.
See the MySQL Numeric Type Documentation. Te rzeczy są dobrze udokumentowane.
Zakres dla podpisanego INT
to [-2147483648, 2147483647].
Należy pamiętać, że w przypadku INT(x)
, x oznacza „szerokość wyświetlacza” i nie ma nic wspólnego z wymaganiami zakres lub Space:
MySQL obsługuje rozszerzenie dla opcjonalnie określający wyświetlacz szerokość typów danych liczbowych całkowitych w nawiasach po słowie podstawowym dla typu. Na przykład, INT (4) określa INT z szerokością wyświetlania czterech cyfr ... Szerokość wyświetlania nie ogranicza [ani nie poszerza] zakresu wartości, które mogą być przechowywane w kolumnie.
Szczęśliwe kodowanie.
Otworzyłeś moje oczy: -O ... – Buksy
Maksymalna wartość można przechowywać w podpisanym całkowita wynosi 2147483647 I unsigned int jest 4294967295 zarówno w przypadku przekroczenia limitu
możliwe duplikat [Jak mogę naprawić „Out of wartości zakresu dostosowanego do kolumny” błąd?] (http://stackoverflow.com/questions/1786509/how-do-i-fix-the-of-range-value-adjusted-for-column-error) –