Opened 17 years ago
Closed 14 years ago
#5304 closed (invalid)
timezone aware datetime causes error when saving on mysql
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Keywords: | timezone aware datetime causes error when saving on mysql | |
Cc: | oliver@… | Triage Stage: | Design decision needed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
It appears that the mysql database engine doesn't support timezone aware datetimes. Although I always save datetime with the timezone set to the TIME_ZONE settings, I have an error. It works on Postgres.
Way to reproduce it:
- Create a Model with a DateTimeField field
- Create an object and set this field to a timezone aware datetime
- Save it:
Traceback (most recent call last): File "<console>", line 1, in <module> File "/Volumes/MacData/Users/juju/mixin/events/models.py", line 472, in save super(MxEvent, self).save() File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/django/db/models/base.py", line 251, in save ','.join(placeholders)), db_values) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/django/db/backends/util.py", line 19, in execute return self.cursor.execute(sql, params) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/MySQLdb/cursors.py", line 168, in execute if not self._defer_warnings: self._warning_check() File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/MySQLdb/cursors.py", line 82, in _warning_check warn(w[-1], self.Warning, 3) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/warnings.py", line 62, in warn globals) File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/warnings.py", line 102, in warn_explicit raise message Warning: Out of range value for column 'start_date' at row 1
Work around: Save non timezone aware datetime.
Change History (4)
comment:1 by , 17 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|
comment:2 by , 17 years ago
comment:3 by , 16 years ago
Cc: | added |
---|
comment:4 by , 14 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
This is correct behaviour. Django cannot save that data and so an error is raised. We cannot work around that (without throwing away information), so have to stop there.
Note:
See TracTickets
for help on using tickets.
I got around this in my code by converting my datetimes to naive before using them to create a model. ala: