Opened 14 years ago
Last modified 14 years ago
#15082 closed
delete() does not function consistently with CharField PKs — at Initial Version
Reported by: | w004dal | Owned by: | nobody |
---|---|---|---|
Component: | Core (Other) | Version: | 1.2 |
Severity: | Keywords: | model, db | |
Cc: | w004dal@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | yes |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I'm working with MyISAM tables with MySQL and have the following behavior with delete() on Django 1.2.3-1 on Fedora Core 12.
class DoesWork(models.Model):
mac_id = models.CharField(max_length=17)
ip = models.CharField('Host/IP Address', max_length=255)
class DoesNotWork(models.Model):
mac_id = models.CharField(max_length=17, primary_key=True)
ip = models.CharField('Host/IP Address', max_length=255)
The following works as expected, creating, deleting, and putting the item back:
zz = DoesWork.objects.create(mac_id='99:99:99:99:99:99', ip='127.0.0.1')
zz.delete() # remove from DB
zz.save() # it's back in the DB
However, if I use the DoesNotWork model, whose only difference is having a CharField as a primary key:
zz = DoesNotWork.objects.create(mac_id='99:99:99:99:99:99', ip='127.0.0.1')
zz.delete() # remove from DB
zz.save() # EXCEPTION THROWN:
IntegrityError: (1048, "Column 'mac_id' cannot be null")
I checked by printing out zz.dict, and the mac_id was 'None' with the DoesNotWork object, but was untouched with the DoesWork object.