#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: | dev | 
| Severity: | Keywords: | DatabaseWrapper transaction_state dummy backend | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
Steps to reproduce
- Start a new Django (r15438) project
 - Add a URL mapping to a view that does not exist
 - Start the development server
 - 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.
  Note:
 See   TracTickets
 for help on using tickets.
    
In [15440]: