エラー: django.db.utils.ProgrammingError: syntax error at or near "WITH ORDINALITY" LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
エラー
django.db.utils.ProgrammingError: syntax error at or near "WITH ORDINALITY" LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
以上のエラーが発生した。
これはdjangoのmigrateコマンドを実行したときのエラーである。
環境
環境 ---------------centos7---------------- $ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) -------------------------------------- ---------------python----------------- $ python3.6 -V Python 3.6.6 -------------------------------------- ---------------django----------------- $ pip show django Name: Django Version: 2.1 Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design. Home-page: https://www.djangoproject.com/ Author: Django Software Foundation Author-email: foundation@djangoproject.com License: BSD Location: /home/*****/.local/lib/python3.6/site-packages Requires: pytz Required-by: django-allauth ------------------------------------- --------------postgrsql-------------- $ postgres --version postgres (PostgreSQL) 9.2.24 -------------------------------------
今までデプロイできていたのに何らかの理由でできなくなってしまった。
上記によるとdjangoのバージョン2.1では、postgresqlは9.4以上を必要とするらしい。エラーの原因はこのバージョンが問題であった。
https://docs.djangoproject.com/ja/2.1/releases/2.1/#dropped-support-for-postgresql-9-3
エラー対処方法
postgeSQL公式のリポジトリを利用する。
https://yum.postgresql.org/
上記からpostgresqlのリポジトリをインストールする。具体的には以下の流れで実行する。
postgresql公式url(上記)にアクセスする。
使いたいpostgresqlのバージョンを選択しクリック。例えばpostgreql11を利用するとする。
自分が使っているのosはcentos7なのでCentOS 7 - x86_64がリポジトリである。このリンクに対し、右クリックでリンクのアドレスをコピーを選択する。
次にサーバーのコマンドラインにリンクのアドレスを貼り付ける。
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
これでpostgeSQL公式のリポジトリを利用できる状態にできた。
sudo yum install postgresql11-server
これでバージョンを上げたpostgresqlを利用することでdjangoのmigrateコマンドをエラーなく実行することができた。