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

प्रत्येक गैर-डिफ़ॉल्ट फ़ील्ड निर्दिष्ट किए बिना MySQL INSERT (#1067 - 'तालिका' के लिए अमान्य डिफ़ॉल्ट मान)

आपका एक सर्वर डिफ़ॉल्ट रूप से सख्त मोड में चल रहा है और दूसरा नहीं। यदि कोई सर्वर सख्त मोड में चलता है (या आप इसे अपने कनेक्शन में सेट करते हैं) और आप NULL के रूप में परिभाषित कॉलम में NULL मान डालने का प्रयास करते हैं तो आपको मिलेगा #1364 त्रुटि। सख्त मोड के बिना आपका NULL मान खाली स्ट्रिंग या 0 से बदल दिया जाएगा।

उदाहरण:

CREATE TABLE `test_tbl` (
 `id` int(11) NOT NULL,
 `someint` int(11) NOT NULL,
 `sometext` varchar(255) NOT NULL,
 `somedate` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

SET sql_mode = '';
INSERT INTO test_tbl(id) VALUES(1);
SELECT * FROM test_tbl;
+----+---------+----------+---------------------+
| id | someint | sometext | somedate            |
+----+---------+----------+---------------------+
|  1 |       0 |          | 0000-00-00 00:00:00 |
+----+---------+----------+---------------------+
SET sql_mode = 'STRICT_ALL_TABLES';
INSERT INTO test_tbl(id) VALUES(2);
#1364 - Field 'someint' doesn't have a default value 


  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. किसी तालिका में अल्पविराम से अलग किए गए मान दिखाने में असमर्थ

  3. ऐप इंजन और MySQL

  4. Mysql कमांड लाइन की डिस्प्ले सेटिंग्स को कैसे एडजस्ट करें?

  5. MySQL JDBC ड्राइवर में cachePrepStmts और useServerPrepStmts में क्या अंतर है