2017-12-31 36 views
-1

이 오류가 발생하고 테이블 및 열을 만드는 데 익숙하지 않은 경우 다른 유사한 문제와 대답이 도움이되지 못합니다.# 1062 - 'PRIMARY'키 중복 항목 '0'7

Error 

SQL 쿼리 :

INSERT INTO orders_session_info 
(txn_signature , orders_id , payment , payment_title , payment_amount , payment_currency , payment_currency_val , sendto , billto , language , language_id , currency , currency_value , firstname , lastname , content_type , affiliate_id , affiliate_date , affiliate_browser, affiliate_ipaddress , affiliate_clickthroughs_id) 
VALUES 
(
'd4208b15558a761c34dc7c79b87275b4', '20167', 'paypal', 'PayPal', '273.56', 'USD', '1.00000000', '140', '140', 'english', '1', 'USD', '1.00000000', 'Pauls', 'Dandzbergs', 'physical', '0', '0000-00-00 00:00:00', '', '', '0' 
); 

MySQL은 말했다 : 문서

#1062 - Duplicate entry '0' for key 'PRIMARY' 

그리고 코드 :

-- Table structure for table `orders_session_info` 
-- 

DROP TABLE IF EXISTS orders_session_info; 
CREATE TABLE orders_session_info (
    txn_signature int(11) NOT NULL AUTO_INCREMENT, 
    orders_id int(11) NOT NULL, 
    payment varchar(32) NOT NULL, 
    payment_title varchar(32) NOT NULL, 
    payment_amount varchar(32) NOT NULL, 
    payment_currency varchar(32) NOT NULL, 
    payment_currency_val varchar(32) NOT NULL, 
    sendto varchar(32) NOT NULL, 
    billto varchar(32) NOT NULL, 
    language varchar(32) NOT NULL, 
    language_id varchar(32) NOT NULL, 
    currency varchar(32) NOT NULL, 
    currency_value varchar(32) NOT NULL, 
    firstname varchar(32) NOT NULL, 
    lastname varchar(128) NOT NULL, 
    content_type varchar(128) NOT NULL, 
    affiliate_id varchar(128) NOT NULL, 
    affiliate_date varchar(128) NOT NULL, 
    affiliate_browser varchar(128) NOT NULL, 
    affiliate_ipaddress varchar(128) NOT NULL,  
    affiliate_clickthroughs_id varchar(128) NOT NULL, 
    PRIMARY KEY (txn_signature), 
    KEY txn_signature(orders_id) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; 

오류입니다

특정 도움을 많이 주시면 감사하겠습니다 ...

-- 
-- Dumping data for table orders_session_info 

답변

1

기본 키 필드 txn_signatureauto increment 필드입니다. 즉, 데이터베이스가 새 행을 삽입 할 때 데이터베이스에 대해 고유 한 값을 자동으로 작성합니다.

따라서이 필드는 INSERT 문에 포함하면 안됩니다. 데이터베이스가 처리합니다. 지금은 자동 기능을 무시하고 "d4208b15558a761c34dc7c79b87275b4"값을 수동으로 삽입하려고합니다. 분명히 한 번 이상 행이 있으면 중복 ID가 발생하므로 허용되지 않습니다. 또한 필드가 int이고 문자열을 삽입하려고 시도하는 경우에도 작동하지 않습니다.

+1

... 서버가 적절히 엄격한'@@ SQL_MODE'를 사용할 수 없으므로 숫자로 시작하지 않는 문자열은 단순히 정수 값 0으로 강제 변환됩니다. (+1) –

+0

@ Michael- sqlbot 추가에 대한 감사, 나는 그것을 몰랐다. – ADyson

관련 문제