2011-08-03 12 views
26

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

+0

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) –

Odpowiedz

38

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
.

+1

co robi 11 w int (11) znaczy wtedy? – Thyagi

+2

@Thyagi Here 11 to tylko szerokość wyświetlacza int coloumn – Rams

33

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.

+3

Otworzyłeś moje oczy: -O ... – Buksy

4

Maksymalna wartość można przechowywać w podpisanym całkowita wynosi 2147483647 I unsigned int jest 4294967295 zarówno w przypadku przekroczenia limitu