Opened 16 years ago
Closed 16 years ago
#4048 closed (fixed)
mysql introspection doesn't handle CHAR(n) fields
Reported by: | Owned by: | Adrian Holovaty | |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 0.96 |
Severity: | Keywords: | mysql inspectdb | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I have a legacy table that has columns like
CREATE TABLE `foo_info` ( `foo_tag` int(11) NOT NULL auto_increment, `record_type` char(8) default NULL, `name_prefix` char(10) default NULL, `first_name` char(20) default NULL, ...
note: CHAR, not VARCHAR.
"python manage.py inspectdb" turns these into TextFields since it doesn't know any better. They work much better as CharFields; the attached diff makes that happen.
Attachments (2)
Change History (6)
Changed 16 years ago by
Attachment: | introspection.py.diff added |
---|
comment:1 Changed 16 years ago by
Triage Stage: | Unreviewed → Ready for checkin |
---|
Changed 16 years ago by
Attachment: | introspection.py-try-2.diff added |
---|
A less incorrect diff for introspection.py
comment:2 Changed 16 years ago by
I missed that the STRING -> TextField mapping was done explicitly. I attached a new patch that changes the existing mapping instead of adding a new one at the end.
CharField is a much better match for STRING than TextField is. Neither one will exactly recreate the original schema with "python manage.py sql", but STRINGs are much closer to VAR_STRINGs than they are to BLOBs.
comment:3 Changed 16 years ago by
A bit subjective, this one, but I'm inclined to agree that CharField will be more appropriate. The backwards-incompat change is unlikely to bite anybody badly, either.
In future, please make patches from the route of the source tree so that we can see which file is patched (in this case, it's easy enough to work it out, but not always).
comment:4 Changed 16 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Patch for db/backends/mysql/introspection.py