Postgis migration error after migrating to Django 1.8

I work with the postgres base and the postgis extension. Now, after switching to Django 1.8, I get this error when running manage.py migrate :

 Traceback (most recent call last): File "./manage.py", line 13, in <module> execute_from_command_line(sys.argv) File "/my-project/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/my-project/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/my-project/env/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv self.execute(*args, **cmd_options) File "/my-project/env/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute output = self.handle(*args, **options) File "/my-project/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 91, in handle connection.prepare_database() File "/my-project/env/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py", line 39, in prepare_database cursor.execute("CREATE EXTENSION IF NOT EXISTS postgis") File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "/my-project/env/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute return self.cursor.execute(sql) django.db.utils.ProgrammingError: type "spheroid" already exists 

Versions

I am using Postgres.app on OS X

  • psql (9.3.4)
  • SELECT PostGIS_version(); postgis_version 2.1 USE_GEOS=1 USE_PROJ=1USE_STATS=1
  • Django 1.8.2
+5
source share
1 answer

Ok, I solved it.

First I updated postgres and postgis, replacing Postgres.app with the newest and updating the brew packages. After that, I got the following error:

 Traceback (most recent call last): File "./manage.py", line 13, in <module> execute_from_command_line(sys.argv) File "/my-project/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/my-project/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/my-project/env/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv self.execute(*args, **cmd_options) File "/my-project/env/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute output = self.handle(*args, **options) File "/my-project/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 91, in handle connection.prepare_database() File "/my-project/env/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py", line 39, in prepare_database cursor.execute("CREATE EXTENSION IF NOT EXISTS postgis") File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "/my-project/env/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/my-project/env/lib/python2.7/site-packages/django/db/backends/utils.py", line 62, in execute return self.cursor.execute(sql) django.db.utils.InternalError: PostGIS is already installed in schema 'public', uninstall it first 

Then I performed "Hard Upgrade" as described here http://postgis.net/docs/manual-2.1/postgis_installation.html#upgrading

All steps (including hard update)

  • pg_dump -U $PGUSER -Fc -b -v -f "your_db.backup" your_db
  • psql -U $PGUSER -d postgres -c "DROP DATABASE your_db;"
  • brew uninstall postgresql93 && brew install postgresql or brew upgrade postgresql
  • brew uninstall postgis15 && brew install postgis or brew upgrade postgis
  • Replace Postgres.app with the latest version
  • pip uninstall psycopg2 && pip install psycopg2
  • psql -U $PGUSER -d postgres -c "CREATE DATABASE your_db;"
  • psql -U $PGUSER -d your_db -c "CREATE EXTENSION postgis;"
  • /usr/local/share/postgis/postgis_restore.pl your_db.backup | psql -U $PGUSER your_db 2> errors.txt
+3
source

All Articles