【问题标题】:Django app engine can not connect to db No such file or directory Is the server running locally and accepting connections on Unix domain socketDjango 应用引擎无法连接到 db 没有这样的文件或目录 服务器是否在本地运行并接受 Unix 域套接字上的连接
【发布时间】:2021-09-05 07:25:32
【问题描述】:

我有一个我构建的 Django 应用程序,我正在尝试将应用程序上传到应用程序引擎,但由于某种原因,我收到错误 could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket 我已经使用应用引擎将另一个 Django 应用上传到 GCP,但这次不同;我的猜测是关于 PostgreSQL。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'main',
        'USER': os.getenv('USERNAME'),
        'PASSWORD': os.getenv('PASSWORD'),
        'HOST': os.getenv("HOST"),
        'PORT': '5432'
    }
}

我尝试在本地删除端口、更改端口等。应用程序正在运行并且可以连接到代理;当我部署应用程序时,它无法连接。 我确保在部署应用程序之前关闭本地连接以防万一。 除了引擎 'django.db.backends.postgresql_psycopg2' 我的旧应用程序使用相同的配置运行我在这里更改引擎的原因是 django postgresql

【问题讨论】:

    标签: sql django postgresql google-app-engine google-cloud-platform


    【解决方案1】:

    所以我解决了这个问题,这是一个连接细节。问题是 HOST 是“/cloudsql/host/dbname”,在我的本地机器上,它可以与云 SQL 代理一起正常工作,但在应用引擎生产中,这会导致错误。无论如何,谢谢你的回答。

    【讨论】:

    • 你用应用引擎生产的什么替换了主机?
    【解决方案2】:

    我认为这取决于与应用程序相比 Postgress 的运行位置。例如,我有一个在 windows 上运行的 postgres 服务器。我可以使用正常的密码、主机和端口号进行连接。但我也在 WSL(Linux 的子系统)中开发,因为我仍然想在我的 Windows 环境中使用 postgres,所以我需要允许该端口接收传入的请求。
    https://serverfault.com/questions/1041981/how-can-i-connect-to-postgres-running-on-the-windows-host-from-inside-wsl2

    打开端口后,我需要指定我的windows环境的ip地址。在linux中,windows不是localhost,所以它就像cli中的user:password@172.*.*:5432/<db_name>

    这是另一种打开端口以允许传入请求的方法。 How to Allow Remote Access to PostgreSQL database

    希望这会有所帮助

    【讨论】:

    • 我同意,但我的情况略有不同,因为我使用的是 GCP SQL,并且默认端口是打开的并允许传入请求。我正在使用云 SQL 代理,它从本地端口打开一个到云的端口并且工作正常。只有当我上传服务器。如果您知道如何在 GCP 中解决此问题,我将很高兴听到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多