diadia

興味があることをやってみる。自分のメモを残しておきます。

エラー: 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
-------------------------------------

 

今までデプロイできていたのに何らかの理由でできなくなってしまった。

参考:https://stackoverflow.com/questions/55740085/django-db-utils-programmingerror-syntax-error-at-or-near-with-ordinality-line

上記によると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コマンドをエラーなく実行することができた。