Opened 9 years ago

Last modified 9 years ago

#24862 closed Cleanup/optimization

Patch for GeoDjango to improve error message if database connection is bad — at Version 1

Reported by: brycenesbitt Owned by: nobody
Component: GIS Version: dev
Severity: Normal Keywords: PostGIS, GeoDjango, GIS, Usability
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: yes UI/UX: no

Description (last modified by brycenesbitt)

For a project with GeoDjango if the database is completely down, you'll get exception:

django.core.exceptions.ImproperlyConfigured: Cannot determine PostGIS version for database "umap" . GeoDjango requires at least PostGIS version 1.3. Was the database created from a spatial database template?

This patch first does a trivial database connection to flesh out the real exception, before checking the PostGIS version number:

***************
*** 246,256 ****
          # comprising user-supplied values for the major, minor, and
          # subminor revision of PostGIS.
- 
-         # First connect to the database trivially
-         # This prevents raising a GeoDjango exception below if the connection is bad
-         with self.connection.temporary_connection() as cursor:
-             cursor.execute('SELECT version()')
- 
-         # Now check PostGIS
          if hasattr(settings, 'POSTGIS_VERSION'):
              version = settings.POSTGIS_VERSION
--- 246,249 ----
***************
*** 260,265 ****
              except DatabaseError:
                  raise ImproperlyConfigured(
!                     'Cannot determine PostGIS version for database "%s" '
!                     'using command "SELECT postgis_lib_version()". '
                      'GeoDjango requires at least PostGIS version 1.3. '
                      'Was the database created from a spatial database '
--- 253,257 ----
              except DatabaseError:
                  raise ImproperlyConfigured(
!                     'Cannot determine PostGIS version for database "%s". '
                      'GeoDjango requires at least PostGIS version 1.3. '
                      'Was the database created from a spatial database '

Change History (1)

comment:1 by brycenesbitt, 9 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top