자동증가해서 유니크한 값을 사용하는 id필드를 int형이 아닌 bigint로 사용했을 경우 다음과 같은 문제가 나타납니다.
실제 bigint 값 : 11010000000016
위 값에 +1을 하게되면 php에서는 1.101E+13 이렇게 표시를 합니다.
정상적으로 값을 표현하기 위해서는 sprintf("%.0f",$변수)
<?php
$board_id = '11010000000016'
$board_id = $board_id + 1;
echo $board_id."===".sprintf("%.0f",$board_id)
?>
결과
1.101E+13===11010000000016
그리고 두번째 insert 할때 bigint형 id에 자동증가 값이 들어가고 codeigniter의 $this->db->insert_id()를 호출하면
bigint형으로 값을 못 가져오고 int형으로 가져옵니다.
<?php
//insert 액션후
$lid = $this->db->insert_id();
$last_id = big_last_id();
echo $lid."-----".$last_id;
function big_last_id()
{
$last_id_query = $this->db->query('select last_insert_id() as lst');
$last_ids = $last_id_query->row();
return $last_ids->lst;
}
?>
결과
1768646720-----200100000000064
그래서 위와 같이 mysql 내부함수인 last_insert_id()로 처리를 해야합니다.
이 넘들 때문에 작업시간이 좀 딜레이됐네요. ㅋ
혹시 unsigned int 는 문제 없겠죠?
저는 id가 40억 이면 될듯 해서.. ^^;