कम बुराई संभवतः माइग्रेशन स्क्रिप्ट और प्रभावित एप्लिकेशन दोनों के लिए सत्र-व्यापी SQL मोड को बदलने के लिए है - यह एक साधारण एक बार परिवर्तन होना चाहिए (जब तक कि कनेक्शन कोड सौ स्थानों पर कॉपी + पेस्ट नहीं किया जाता है)। अमान्य तिथियों की अनुमति देने वाला तरीका है ALLOW_INVALID_DATES :
SET @@SESSION.sql_mode = CONCAT_WS(',', @@SESSION.sql_mode, 'ALLOW_INVALID_DATES');
पूर्ण डेमो :
mysql> CREATE TABLE foo (bar DATE);
Query OK, 0 rows affected (0.03 sec)
mysql> SELECT @@SESSION.sql_mode;
+--------------------------------------------+
| @@SESSION.sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)
mysql> INSERT INTO foo (bar) VALUES ('2019-02-30');
ERROR 1292 (22007): Incorrect date value: '2019-02-30' for column 'bar' at row 1
mysql> SET @@SESSION.sql_mode = CONCAT_WS(',', @@SESSION.sql_mode, 'ALLOW_INVALID_DATES');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> INSERT INTO foo (bar) VALUES ('2019-02-30');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM foo;
+------------+
| bar |
+------------+
| 2019-02-30 |
+------------+
1 row in set (0.00 sec)