Opened 7 years ago

Closed 17 months ago

#11523 closed Bug (wontfix)

ORM/MySQL backend doesn't set pk when Warning exception is raised

Reported by: Tomasz Zieliński Owned by: nobody
Component: Database layer (models, ORM) Version:
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Link to the discussion:

http://groups.google.com/group/django-users/browse_thread/thread/7c726fe6531abaaf

Code:

from MySQLdb import Warning as Warning
from django.db import models
import unittest

class TestModel(models.Model):
    char_field = models.CharField(max_length=5)

class Case1(unittest.TestCase):
    def test1(self):
        print "Count 1:", TestModel.objects.count()
        m = TestModel(char_field="123456")
        try:
            m.save()
        except Warning:
            print "Count 2:", TestModel.objects.count()
            print "m.id=", m.id
            print "all()[0].id=", TestModel.objects.all()[0].id

The above code prints:

Count 1: 0
Count 2: 1
m.id= None
all()[0].id= 1 
  • which means to me that although m is saved to db, primary key is not set in m.pk after m.save().

If you look into newsgroups thread above, it seems that MySQLdb returns pk properly.

Change History (5)

comment:1 Changed 7 years ago by Alex Gaynor

Triage Stage: UnreviewedAccepted

comment:2 Changed 6 years ago by Julien Phalip

Severity: Normal
Type: Bug

comment:3 Changed 5 years ago by Aymeric Augustin

UI/UX: unset

Change UI/UX from NULL to False.

comment:4 Changed 5 years ago by Aymeric Augustin

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:5 Changed 17 months ago by Tim Graham

Resolution: wontfix
Status: newclosed

As of #23871, Django no longer promotes warnings to exceptions, so I think this issue is obsolete.

Note: See TracTickets for help on using tickets.
Back to Top