2017-12-31 33 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に強制的に変換されます。 –

+0

@ Michael- sqlbotが追加してくれてありがとう、私はそれを知らなかった。 – ADyson

関連する問題