GeoDjangoではじめる地理空間情報
https://homata.gitbook.io/geodjango/geodjango/install
上記のサイトを参考に、GeoDjangoで簡単な地図アプリを開発しようとしています。現在、上記サイトの『GeoDjangoのインストール』に取り組んでいますが、python manage.py migrate
を実行すると以下のエラーが発生します。
Python
1(略) 2psycopg2.OperationalError: server closed the connection unexpectedly 3 This probably means the server terminated abnormally 4 before or while processing the request. 5(略) 6django.db.utils.OperationalError: server closed the connection unexpectedly 7 This probably means the server terminated abnormally 8 before or while processing the request.
コマンド実行からエラー発生(表示)までは1分ほどかかります。
このエラーの解決方法を知りたいです。
##開発環境
macOS Catalina 10.15.7(仮想環境はvenvで作成)
Python 3.7.4
PostgreSQL 12.4
Django 3.1.1
psycopg2 2.8.1
##問題が発生するまで
基本的には、上記サイトの手順に従っています(ユーザ名はusername
に変更しています)。
- Djangoのチュートリアル終了後、GeoDjango用の環境構築を開始。
createdb -U username -E UTF-8 geodjangodb
を実行しDBを作成(この際パスワードは要求されず) psql -U username -d geodjangodb -c "CREATE EXTENSION postgis;"
を実行しPostGISのエクステンションを作成(この際もusernameのパスワードは要求されず)psql -U postgres -d geodjangodb -c "select * from pg_available_extensions;"
でエクステンションを確認(この際もusernameのパスワードは要求されず)。結果は以下。
Python
1 name | default_version | installed_version | comment 2------------------------------+-----------------+-------------------+ 3(省略) 4 postgis | 3.0.2 | 3.0.2 | PostGIS geometry, geography, and raster spatial types and functions 5 (省略) 6(59 rows)
psql -U postgres -l
でデータベースの確認(この際もusernameのパスワードは要求されず)。結果は以下。
Python
1 Name | Owner | Encoding | Collate | Ctype | Access privileges 2-------------+------------+----------+---------+-------+--------------------------- 3 geodjangodb | username | UTF8 | C | C | 4 gis-db | username | UTF8 | C | C | 5 postgres | username | UTF8 | C | C | 6 template0 | username | UTF8 | C | C | =c/username + 7 | | | | | username=CTc/username 8 template1 | username | UTF8 | C | C | =c/username + 9 | | | | | username=CTc/username 10(5 rows)
- アプリケーションを作成
python manage.py startapp world
- psycopg2はパッケージバージョンでインストール
pip install psycopg2
- settings.pyを以下のように編集
Python
1DATABASES = { 2 'default': { 3 'ENGINE': 'django.contrib.gis.db.backends.postgis', <-- 変更 4 'NAME': 'geodjangodb', <-- 変更 データベース名 5 'USER': 'username', <-- 追加 ユーザ名 6 'HOST':'localhost', <-- 追加 ホスト名 7 'PASSWORD': 'xxxxxxxx', <-- 追加 パスワード 8 } 9} 10#'django.contrib.gis'と'world'を追加。 11INSTALLED_APPS = ( 12 'django.contrib.admin', 13 'django.contrib.auth', 14 'django.contrib.contenttypes', 15 'django.contrib.sessions', 16 'django.contrib.messages', 17 'django.contrib.staticfiles', 18 'django.contrib.gis', <-- 追加 19 'world.apps.WorldConfig', <-- 追加 (obsolete: world) 20)
- PostGISのデータベースにテーブルを作成するために
python manage.py migrate
を実行→上記エラー発生
##試したこと
データベースが起動していないのではという指摘があったため、こちらの記事を参考にPostgreSQLの起動を行いましたが、解決できませんでした(brewを使った方法と、pg_ctlを使った方法のどちらもを試しました)。その他、作成したgeodjangodbを一旦消して作り直したり、元記事の通りユーザを切り替えてトライしてみたりしましたが、状況は変わりませんでした。なお、python manage.py migrate
でエラーが発生したのは、PostgreSQLに切り替えてからであり、チュートリアルの時点(SQlite3を利用)の時点では正常に実行できていました。
不明な点、明確でない点などあればご質問いただけると助かります。よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。