Code

Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#15230 closed (fixed)

django.db.backends.dummy.base.DatabaseWrapper has no attribute 'transaction_state'

Reported by: mp Owned by: nobody
Component: Database layer (models, ORM) Version: master
Severity: Keywords: DatabaseWrapper transaction_state dummy backend
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation:
Needs tests: Patch needs improvement:
Easy pickings: UI/UX:

Description

Steps to reproduce

  1. Start a new Django (r15438) project
  2. Add a URL mapping to a view that does not exist
  3. Start the development server
  4. Access the URL

Exception

Traceback (most recent call last):

  File "/tmp/django/core/servers/basehttp.py", line 282, in run
    self.result = application(self.environ, self.start_response)

  File "/tmp/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)

  File "/tmp/django/core/handlers/wsgi.py", line 273, in __call__
    response = self.get_response(request)

  File "/tmp/django/core/handlers/base.py", line 168, in get_response
    receivers = signals.got_request_exception.send(sender=self.__class__, request=request)

  File "/tmp/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)

  File "/tmp/django/db/__init__.py", line 100, in _rollback_on_exception
    transaction.rollback_unless_managed(using=conn)

  File "/tmp/django/db/transaction.py", line 182, in rollback_unless_managed
    if not is_managed(using=using):

  File "/tmp/django/db/transaction.py", line 137, in is_managed
    if connection.transaction_state:

AttributeError: 'DatabaseWrapper' object has no attribute 'transaction_state'

Patch

Index: db/backends/dummy/base.py
===================================================================
--- db/backends/dummy/base.py	(revision 15438)
+++ db/backends/dummy/base.py	(working copy)
@@ -52,5 +52,8 @@
         self.settings_dict = settings_dict
         self.alias = alias
 
+        self.transaction_state = []
+
     def close(self):
         pass

Discussion

I checked django/db/backends/__init__.py and there are some other attributes that might be relevant.

This should be fixed for 1.3 as it renders Django unusable for Projects that do not need a database.

Attachments (0)

Change History (2)

comment:1 Changed 3 years ago by Alex

  • Resolution set to fixed
  • Status changed from new to closed

In [15440]:

Fixed #15230 -- added some more attributes to the dummy database backend.

comment:2 Changed 3 years ago by jacob

  • milestone 1.3 deleted

Milestone 1.3 deleted

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.