> 어떤 테이블을 만들때 type을 bigint라고 주었습니다.
> bigint는 20byte를 사용한다는 것으로 알고 있고 처리할 수 있는 정수값이
> 정확히는 몰라도 100억보다는 훨씬 큰것으로 알고 있습니다.
> 그런데 4599999999 보다 큰수를 insert하면 엉뚱한 값으로 처리되네요.
>
bigint 는 일단 저장가능한 숫자는 -9223372036854775807 부터 +9223372036854775807 까지입니다. (2^63-1)에 해당하는 숫자입니다.
그러니 제시하는 숫자는 당연히 처리가 가능해야 합니다. 그리고 20 byte는 아닌 것 같군요.
> 다음은 제가 테스트 해본 결과 입니다.
>
> mysql> create table mytest ( myint bigint );
> Query OK, 0 rows affected (0.02 sec)
>
> mysql> describe mytest;
> +-------+------------+------+-----+---------+-------+
> | Field | Type | Null | Key | Default | Extra |
> +-------+------------+------+-----+---------+-------+
> | myint | bigint(20) | YES | | NULL | |
> +-------+------------+------+-----+---------+-------+
> 1 row in set (0.00 sec)
>
> mysql> insert into mytest values ( 5000000000 );
> Query OK, 1 row affected (0.00 sec)
>
> mysql> select * from mytest;
> +-----------+
> | myint |
> +-----------+
> | 705032704 |
> +-----------+
> 1 row in set (0.00 sec)
>
> mysql> insert into mytest values (4599999999 );
> Query OK, 1 row affected (0.00 sec)
>
> mysql> select * from mytest;
> +------------+
> | myint |
> +------------+
> | 705032704 |
> | 4599999999 |
> +------------+
> 2 rows in set (0.00 sec)
>
> 이에 대하여 아시는 분 계신나요?
> 답변 부탁드립니다.
저가 테스트해 본 결과입니다.
mysql> create table t (t bigint(20));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t values (5000000000);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t;
+------------+
| t |
+------------+
| 5000000000 |
+------------+
1 row in set (0.00 sec)
제대로 나오는군요. DBMS 자체를 뭔가 잘못 설치했던지 문제가 있는 것 같습니다.
다시 설치해 보시기 바랍니다.
|