【问题标题】:web_1 | MySQLdb._exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")web_1 | MySQLdb._exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
【发布时间】:2021-10-14 05:52:54
【问题描述】:

我正在使用 Djnago 和 MySql 构建一个应用程序。我想使用 docker 来部署我的应用程序。我准备了一个requirement.txt、docker-compose.yml和一个Dockerfile docker-compose.yml

version: '3'
services:
    db:
        image: mariadb
        restart: always
        ports:
            - 3306:3306
        environment:
                MYSQL_DATABASE: stage_emsi
                MYSQL_USER: root
                MYSQL_PASSWORD: password
                MYSQL_ROOT_PASSWORD: password
    web:
        build: .
        command:  python manage.py runserver 0.0.0.0:8000
        ports: 
            - "8000:8000"
        volumes:
            - .:/code
        depends_on: 
            - db
        image: web:django

Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED=1
RUN mkdir /code
WORKDIR /code
RUN pip install mysqlclient
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

错误

b_1  | Watching for file changes with StatReloader
web_1  | Performing system checks...
web_1  |
web_1  | System check identified no issues (0 silenced).
web_1  | Exception in thread django-main-thread:
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 219, in ensure_connection
web_1  |     self.connect()
web_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
web_1  |     return func(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/base/base.py", line 200, in connect
web_1  |     self.connection = self.get_new_connection(conn_params)
web_1  |   File "/usr/local/lib/python3.9/site-packages/django/utils/asyncio.py", line 26, in inner
web_1  |     return func(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.9/site-packages/django/db/backends/mysql/base.py", line 234, in get_new_connection
web_1  |     connection = Database.connect(**conn_params)
web_1  |   File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect
web_1  |     return Connection(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__
web_1  |     super().__init__(*args, **kwargs2)
web_1  | MySQLdb._exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

【问题讨论】:

    标签: python mysql django mariadb


    【解决方案1】:

    检查您的 Django 应用程序数据库连接设置。您似乎正在尝试通过本地 Linux 套接字文件而不是 MySQL 数据库的 IP 地址进行连接。

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 2014-04-12
      • 2012-08-13
      • 2017-02-12
      • 2012-09-19
      • 2019-09-28
      相关资源
      最近更新 更多