Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

'प्राथमिक' कुंजी के लिए डुप्लिकेट प्रविष्टि '0'

यह तब होता है जब आपके पास प्राथमिक कुंजी होती है लेकिन इसे प्रारंभिक मान न दें। डालने से ही दोहराव हो रहा है।

आपके मामले में, दो संभावनाएं दिमाग में आती हैं:

  1. supp_id प्राथमिक कुंजी है और एक संख्या के रूप में घोषित किया गया है। MySQL के पुराने संस्करणों में, मुझे लगता है कि स्ट्रिंग मान चुपचाप संख्याओं में परिवर्तित हो जाते हैं। चूंकि प्रमुख वर्ण अक्षर हैं, इसलिए मान 0 है।

  2. आपके पास एक और id है फ़ील्ड जो प्राथमिक कुंजी है, लेकिन कोई मूल्य नहीं दिया गया है और घोषित नहीं किया गया है auto_increment

संपादित करें:

मुझे संदेह है कि आप निम्न कोड चाहते हैं:

CREATE TABLE suppliers (
    supplierId int NOT NULL auto_increment primary key,
    supp_name varchar(255) unique,
    company_name varchar(15) NOT NULL,
    town varchar(15),
    phone varchar(15)
);

INSERT INTO Suppliers(supp_name, company_name, town, phone)
    Values ('ADT217', 'AdTec', 'Birmingham', '0121-368-1597'),
           ('CPS533', 'CPS', 'Maidenhead', '01382-893715'),
           ('FCL162', 'ForComp Ltd', 'Nottingham', '01489-133722'),
           ('KBC355', 'KBC Computers', 'Glasgow', '0141-321-1497');

कुछ नोट:

  • आमतौर पर आप चाहते हैं varchar() इसके बजाय char() , जब तक कि आपको स्ट्रिंग्स के अंत में वास्तव में बहुत सारे स्थान पसंद न हों।
  • मैंने तालिका में एक अद्वितीय आपूर्तिकर्ता नाम जोड़ा और आईडी को auto_increment घोषित किया ।
  • एकल उद्धरण स्ट्रिंग स्थिरांक के लिए एएनएसआई मानक हैं। MySQL (और कुछ अन्य डेटाबेस) दोहरे उद्धरण चिह्नों की अनुमति देते हैं, लेकिन मानक का उपयोग न करने का कोई कारण नहीं है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तैयार बयानों का उपयोग करके डेटा संग्रहीत नहीं किया गया

  2. php और jquery AJAX का उपयोग करके mysql डेटाबेस से डेटा प्राप्त करें

  3. मैं MySQL में अपने ENUM-प्रकार के कॉलम में और सदस्य कैसे जोड़ूँ?

  4. sql . में डेल्टा (वर्तमान और पिछली पंक्ति का अंतर) की गणना करें

  5. MySQL:INT को DATETIME में बदलें