Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में NULL मान वाले कॉलम पर NOT NULL लागू करने का परिणाम

यदि किसी कॉलम में पहले से NULL मान मौजूद हैं, तो उस पर ALTER TABLE ... MODIFY ... NOT NULL लागू करने पर MySQL एरर देता है और ऑपरेशन फेल हो जाता है।

उदाहरण

test2 टेबल में ID कॉलम में दूसरी पंक्ति में NULL है:

mysql> SELECT * FROM test2;
+------+--------+
| ID   | Name   |
+------+--------+
| 1    | Gaurav |
| NULL | Rahul  |
+------+--------+

NOT NULL लागू करने का प्रयास

mysql> ALTER TABLE test2 MODIFY ID INT NOT NULL;
ERROR 1265 (01000): Data truncated for column 'ID' at row 2

एरर विश्लेषण

समाधान: पहले NULL मान ठीक करें

-- 1. NULL मानों को डिफ़ॉल्ट/वैध मान से अपडेट करें
UPDATE test2 SET ID = 0 WHERE ID IS NULL;
-- या
UPDATE test2 SET ID = 2 WHERE ID IS NULL;

-- 2. फिर NOT NULL लागू करें
ALTER TABLE test2 MODIFY ID INT NOT NULL;
Query OK, 0 rows affected (0.20 sec)

सर्वोत्तम अभ्यास

  1. पहले जांचें: SELECT COUNT(*) FROM table WHERE col IS NULL
  2. NULL मानों को उपयुक्त डिफ़ॉल्ट से भरें
  3. <ली>फिर NOT NULL कंस्ट्रेंट लागू करें
  4. बड़े टेबल पर ऑपरेशन से पहले बैकअप लें

नोट: MySQL 8.0.13+ में ALTER TABLE ... ALTER COLUMN ... SET NOT NULL सिंटैक्स भी समर्थित है।

  1. - MySQL में TIMESTAMP CURRENT_TIMESTAMP कॉलम में खाली मान डालने पर क्या होता है?

    MySQL में TIMESTAMP DEFAULT CURRENT_TIMESTAMP कॉलम में मान निर्दिष्ट किए बिना INSERT करने पर वर्तमान दिनांक-समय स्वचालित रूप से डाला जाता है। तालिका बनाएं mysql> CREATE TABLE DemoTable ( -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserLoginDate TIMESTAMP DEFAULT CURRENT_T

  1. - रिकॉर्ड वाले मौजूदा टेबल में नया NOT NULL कॉलम जोड़ना

    पहले से बनी टेबल में एक नया NOT NULL कॉलम जोड़ने के लिए ALTER कमांड का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.60 sec) मौजूदा टेबल मे

  1. - MySQL में NULL और NOT NULL रिकॉर्ड वाले कॉलम से केवल NOT NULL मान प्रदर्शित करें

    इसके लिए आप IS NOT NULL प्रॉपर्टी का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1 values(2019-09-10); Query OK, 1 r

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
एरर कोडसंदेशअर्थ
1265Data truncated for column 'X' at row Nपंक्ति N में मान NOT NULL कंस्ट्रेंट के अनुरूप नहीं