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

SQL सर्वर त्रुटि 213:स्तंभ नाम या आपूर्ति किए गए मानों की संख्या तालिका परिभाषा से मेल नहीं खाती।

त्रुटि संदेश 213 एक सामान्य त्रुटि है जो तब होती है जब आप स्तंभ नामों को स्पष्ट रूप से निर्दिष्ट किए बिना किसी तालिका में मान सम्मिलित करने का प्रयास करते हैं।

त्रुटि इस तरह दिखती है:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

यह तब होता है जब आप उस तालिका के लिए मानों की गलत संख्या निर्दिष्ट करते हैं। दूसरे शब्दों में, आपके द्वारा प्रदान किए गए मानों की संख्या तालिका में स्तंभों की संख्या से मेल नहीं खाती।

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

INSERT INTO Customers
VALUES ('Jake');

परिणाम:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

मेरे मामले में, समस्या यह है कि तालिका में वास्तव में तीन कॉलम होते हैं। मेरी तालिका परिभाषा इस तरह दिखती है:

CREATE TABLE Customers (
CustomerId int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(255),
LastName nvarchar(255)
);

मैं एक मान डालने की कोशिश कर रहा हूं, लेकिन SQL सर्वर यह नहीं जानता है कि उसे किस कॉलम में जाना चाहिए, इसलिए त्रुटि।

यदि मैं बहुत अधिक मान सम्मिलित करने का प्रयास करता हूं तो मुझे भी वही त्रुटि मिलेगी। उदाहरण के लिए, निम्न भी वही त्रुटि उत्पन्न करता है।

INSERT INTO Customers
VALUES ('Jake', 'Smith', 'New York', 'USA');

परिणाम:

Msg 213, Level 16, State 1, Line 1
Column name or number of supplied values does not match table definition.

त्रुटि कैसे ठीक करें

इसे ठीक करने का एक तरीका यह सुनिश्चित करना है कि आपके द्वारा सम्मिलित किए जाने वाले मानों की संख्या वास्तव में तालिका में स्तंभों की संख्या से मेल खाती है।

इसे करने का एक बेहतर तरीका स्पष्ट रूप से अपने INSERT . में कॉलम नाम निर्दिष्ट करना है बयान। ऐसा करने से यह सुनिश्चित होगा कि आप गलती से गलत कॉलम में डेटा नहीं डालेंगे।

तो इस आधार पर कि मैं किन मूल्यों को सम्मिलित करना चाहता हूं, मैं अपना उदाहरण इस पर फिर से लिख सकता हूं:

INSERT INTO Customers (FirstName)
VALUES ('Jake');

या यह:

INSERT INTO Customers (FirstName, LastName)
VALUES ('Jake', 'Smith');

निहित स्तंभ नाम

जैसा कि उल्लेख किया गया है, अपने INSERT . में प्रत्येक कॉलम नाम को स्पष्ट रूप से स्पष्ट करना बेहतर है कथन (जैसा कि मैंने पिछले उदाहरण में किया था)।

हालांकि, मैं इस तरह निहित कॉलम नामों का उपयोग करने के लिए अपना उदाहरण बदल सकता हूं:

INSERT INTO Customers
VALUES (1, 'Jake', 'Smith');

हालाँकि, यह अब पहचान कॉलम के संबंध में एक अलग समस्या का कारण बन सकता है। यदि आपको ऐसा करने की आवश्यकता है, तो पहचान कॉलम में एक स्पष्ट मूल्य कैसे सम्मिलित करें देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डेटाटाइम कॉलम की आवश्यकता है जो रिकॉर्ड संशोधित होने पर स्वचालित रूप से अपडेट हो जाता है

  2. मैं एक एसक्यूएल स्टेटमेंट या संग्रहीत प्रक्रिया से बाहरी डेटाबेस से कैसे जुड़ सकता हूं?

  3. एक विशेष सर्वर पर अस्पष्ट स्तंभ नाम त्रुटि

  4. प्रक्रिया पैरामीटर की अपेक्षा करती है जो आपूर्ति नहीं की गई थी

  5. Intel Xeon स्केलेबल प्रोसेसर और SQL सर्वर 2017