2014-10-03 2 views
0

여기에 나와 웹에서 읽은 내용을 토대로 정수>INT's maximum signed value; 2147483647을 저장하려고하면이 오류가 발생합니다. 아래에서 볼 수 있듯이 user_idbigint(20)을 사용했습니다. 그래서 나는 왜 내가이 오류를 겪고 있는지 모른다.키 'PRIMARY'에 대한 중복 항목 '2147483647'

CREATE TABLE IF NOT EXISTS `users` (
    `user_id` bigint(20) unsigned NOT NULL, 
    `screen_name` varchar(20) NOT NULL, 
    `name` varchar(20) DEFAULT NULL, 
    `profile_image_url` varchar(200) DEFAULT NULL, 
    `created_at` datetime NOT NULL, 
    `followers_count` int(10) unsigned DEFAULT NULL, 
    `friends_count` int(10) unsigned DEFAULT NULL, 
    `statuses_count` int(10) unsigned DEFAULT NULL, 
    `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`user_id`), 
    KEY `user_name` (`name`), 
    KEY `last_update` (`last_update`), 
    KEY `screen_name` (`screen_name`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

삽입 처리하는 PHP 스크립트 : 참고로

/* Prepare an insert statement */ 
$query = "INSERT INTO users (user_id, screen_name, name, profile_image_url, created_at, followers_count, friends_count, statuses_count) VALUES (?,?,?,?,?,?,?,?)"; 
$stmt = $mysqli->prepare($query); 
$stmt->bind_param("issssiii", $user_id, $screen_name, $name, $profile_image_url, $created_at, $followers_count, $friends_count, $statuses_count); 
/* Execute the statement */ 
$stmt->execute() 

을 : & 테이블 트위터의 사용자 데이터의 일부를 저장하는 것입니다이 스크립트의 목적은

+0

두 번 확인하기 위해 'DESCRIBE users' 사용자 user_id를 bigint로 표시합니까? – Mike

+1

또한 값이 확실히 존재하지 않는지 확인하십시오. 약간 큰 값을 삽입하십시오. –

+0

@ 마이크 예. 'bigint (20) unsigned '가 정확합니다. – iTurki

답변

2

INT는 최대 서명 값을 가진다 2147483647. 그보다 큰 숫자는 해당 값으로 잘립니다. 당신이해야 할 일은 그 열을 user_id varchar (20) unsigned NOT NULL이되도록 변경하는 것입니다.이 열은 카드 번호가 문자열이고 실제로 숫자가 아니기 때문에 (20 진수로 계산하지 않습니다) 최대 20 자의 문자열을 보유하게됩니다. 또한 증가 할 값이 아니므로 AUTO_INCREMENT를 제거해야합니다.

관련 문제