Det ser ut som att ditt felmeddelande kommer från din MySQL-klient, inte från servern. Så att ställa in serverns strikt läge kommer inte att hjälpa dig att visa dessa datum med den här klienten.
Det verkar som om du har några 2012-09-31 eller 2013-02-29 stildatum i din data. De är korrekt formaterade men annars är de fel. I pre 5.0.2 versioner av MySQL fångades dessa inte korrekt när de gick in i dina data. Nu, din server, inställd på ALLOW_INVALID_DATES
tar inte munkavle på dem, utan konverterar dem istället till '0000-00-00'. Och klienten tjatar på dem.
Ditt första steg för att rensa upp detta är att identifiera de felande raderna. Du kan prova detta.
Aktivera först ALLOW_INVALID_DATES
Kör sedan den här frågan för att titta runt i din tabell. Använd inte SELECT *
SELECT col,col,col,DATE_FORMAT(datecol,'%Y-%m-%d')
FROM mytable
ORDER BY DATE_FORMAT(datecol,'%Y-%m-%d')
Försök att räkna ut från resultatuppsättningen vilka datum som är skräp. De kan placeras först i detta utvalda uttalande, men du måste smutskasta runt lite för att hitta dem.
Ta sedan reda på hur du vill fixa dem. Ta bort raderna? Ändra datumet till 1941-12-07 (datumet som lever i vanära)? Vi kan inte berätta vad du behöver göra här.
Fixa dem sedan. Om det bara finns en eller två, fixa dem en efter en.
UPDATE mytable
SET datecol='whatever replacement date'
WHERE id='the id of the offending row.'
eller
DELETE FROM mytable
WHERE id='the id of the offending row.'
Om det finns tusentals av dem kan du fixa dem i bulk med något sånt här. Men gör inte detta utan att först arbeta igenom problemet mycket noggrant på en testserver. Om du gör ett misstag kommer du att kasta ditt bord.
UPDATE mytable
SET datecol='whatever replacement date'
WHERE '0000-00-00' = DATE_FORMAT(datecol,'%Y-%m-%d')
När du har åtgärdat dina problem, gå tillbaka och gör din SELECT *
, för att se till att du har alla.
Inaktivera sedan ALLOW_INVALID_DATES
och aktivera den aldrig igen.
Det borde rensa upp röran. Lägg märke till att verklig data alltid några rader som inte är perfekta i den.