sql_mode और 'NO_ZERO_DATE' पर कुछ पृष्ठभूमि:https:// dev.mysql.com/doc/refman/5.1/hi/sql-mode.html
आपने उल्लेख किया है कि आपने किसी अन्य सर्वर से तालिकाओं को पुनर्स्थापित किया है। यदि आपने mysqldump का उपयोग किया है तो आपके प्रश्न का उत्तर यह है कि डंप किए गए SQL को लोड करते समय mysql ने 'NO_ZERO_DATE' मोड को बंद कर दिया। Mysqldump (5.5 में परीक्षण किया गया) इस लाइन को डंप किए गए SQL के शीर्ष पर रखता है:
/*!40101 SET @example@sqldat.com@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
यह डंप लोड करते समय विदेशी कुंजी जांच और अन्य उपयोगी चीजों को भी बंद कर देता है।
/*!40014 SET @example@sqldat.com@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @example@sqldat.com@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
यह बताता है कि आप तालिकाओं को पुनर्स्थापित करने में सक्षम क्यों थे, लेकिन जब आप बदलने की कोशिश कर रहे हों तो आपको कड़े नियमों से खेलना होगा। यदि आप वास्तव में इसे ओवरराइड करना चाहते हैं, तो आप अपनी परिवर्तन तालिका के ठीक पहले निम्न को आज़मा सकते हैं:
mysql> SET SESSION sql_mode='';
फिर तालिका बदलें।