Преглед изворни кода

Stop errors on older Spatialite versions that miss some tables

Andrew Godwin пре 10 година
родитељ
комит
5f6558f82f
1 измењених фајлова са 20 додато и 13 уклоњено
  1. 20 13
      django/contrib/gis/db/backends/spatialite/schema.py

+ 20 - 13
django/contrib/gis/db/backends/spatialite/schema.py

@@ -1,3 +1,4 @@
+from django.db.utils import DatabaseError
 from django.db.backends.sqlite3.schema import DatabaseSchemaEditor
 
 
@@ -78,12 +79,15 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
                 self.remove_geometry_metadata(model, field)
         # Make sure all geom stuff is gone
         for geom_table in self.geometry_tables:
-            self.execute(
-                self.sql_discard_geometry_columns % {
-                    "geom_table": geom_table,
-                    "table": self.quote_name(model._meta.db_table),
-                }
-            )
+            try:
+                self.execute(
+                    self.sql_discard_geometry_columns % {
+                        "geom_table": geom_table,
+                        "table": self.quote_name(model._meta.db_table),
+                    }
+                )
+            except DatabaseError:
+                pass
         super(SpatialiteSchemaEditor, self).delete_model(model, **kwargs)
 
     def add_field(self, model, field):
@@ -112,13 +116,16 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
         super(SpatialiteSchemaEditor, self).alter_db_table(model, old_db_table, new_db_table)
         # Repoint any straggler names
         for geom_table in self.geometry_tables:
-            self.execute(
-                self.sql_update_geometry_columns % {
-                    "geom_table": geom_table,
-                    "old_table": self.quote_name(old_db_table),
-                    "new_table": self.quote_name(new_db_table),
-                }
-            )
+            try:
+                self.execute(
+                    self.sql_update_geometry_columns % {
+                        "geom_table": geom_table,
+                        "old_table": self.quote_name(old_db_table),
+                        "new_table": self.quote_name(new_db_table),
+                    }
+                )
+            except DatabaseError:
+                pass
         # Re-add geometry-ness and rename spatial index tables
         for field in model._meta.local_fields:
             if isinstance(field, GeometryField):