sql >> データベース >  >> RDS >> PostgreSQL

SQLiteは機能しますが、PostgreSQLで移行されたデータベースによりエラーが発生します-Django 3.0

    手伝うことができるかどうかはわかりませんが、私はMacを持っていて、Djangoを使用していて、PostgreSQLで問題が発生したので、アイデアを共有します。

    まず、問題は実際にはコードではなくデータベースとの接続にあるように思われます。 Djangoコードでエラーを調べたところ、次のようになっています。

        def _get_response(self, request):
            """
            Resolve and call the view, then apply view, exception, and
            template_response middleware. This method is everything that happens
            inside the request/response middleware.
            """
            ...
    
            # Complain if the view returned None (a common error).
            if response is None:
                ...
    
                raise ValueError(
                    "The view %s.%s didn't return an HttpResponse object. It "
                    "returned None instead." % (callback.__module__, view_name)
                )
    

    私は確かにミドルウェアの専門家ではありませんが、どうやらDjangoはデータベースからデータを受信して​​いないようです。

    Macの異なるバージョンのPostgreSQLで問題が発生したことがあります。 / Library / PostgreSQLで確認できます。2つのディレクトリ(11と12)があるので、どちらをプロジェクトに使用するか注意する必要があります。 PgAdminでは、両方のバージョンを確認できます。古いバージョンを使用している場合、またはPostgreSQLを再インストールしたい場合(これはかなり抜本的ですが、きれいなシートが得られます)、ここに優れたマニュアルがあります: https://medium.com/@zoefhall/effectively-uninstall-and-reinstall-psql-with-homebrew- on-osx-fabbc45c5d9d 。シェルに入力すると、Djangoが使用しているバージョンを確認できます:

    python3 manage.py shell -c "from django.db import connection; print(connection.cursor().connection.server_version)"
    

    私の場合、結果は110005であり、これは11.0.5に変換されます。

    また、psycopg2で何度か問題が発生しました。 Djangoで仮想環境をセットアップするときにインストールする必要があるので、それを管理していれば、おそらくそれは問題ありませんでした。私が抱えていた問題は、設定ファイルが見つからないことでした。私にとって最も簡単な解決策は、バイナリバージョンのpsycopg2-binaryをインストールすることでした。ただし、Macで特定のバージョンのPostgreSQLが必要な場合は、pg_configファイルをPATHに配置する必要があります。 https://www.psycopg.org/docs/install.html 。

    それが私が学んだことです。少しでもお役に立てば幸いです。



    1. 最大のhas_manyリレーションのみで結合し、そのリレーションに選択フィルターを含むクエリをRuby on Railsで構築するにはどうすればよいですか?

    2. PDOマルチ挿入ステートメント

    3. Prisma、データベースをクリアする方法

    4. ケースを選択するとき(選択)