簡體   English   中英

(pymysql.err.OperationalError)(2003,“無法連接到‘0.0.0.0’上的 MySQL 服務器([Errno 111] 連接被拒絕)”)

[英](pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '0.0.0.0' ([Errno 111] Connection refused)")

我嘗試將 flask sqlalchemy 容器與 mysql 容器連接起來。 並配置它們之間的連接。 我有 init_db python 同時在我的項目中創建所有表:

from model import Base

engine = create_engine('mysql+pymysql://test:test@0.0.0.0/test')

Base.metadata.create_all(engine)

還有我的 docker-compose:

version: '3'

services:
  flask:
    build: ./flask
    container_name: flask
    restart: always
    depends_on:
      - db
    links:
      - db
    volumes:
      - ./flask:/flask
    depends_on:
      - db
    ports:
      - 5000:5000

  db:
    image: mysql
    container_name: mysql_db
    environment:
      - MYSQL_USER=test
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_PASSWORD=test
      - MYSQL_DATABASE=test
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - ./db:/docker-entrypoint-initdb.d
    restart: always
    ports:
      - 3308:3308

當我嘗試使用 sqlalchemy 保存數據時,我收到錯誤消息:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '0.0.0.0' ([Errno 111] Connection refused)")

我試圖為我的數據庫添加 sql 文件,但它無濟於事。 當我打開數據庫容器時,測試數據庫不存在。

在這個 docker-compose 環境中, flask容器可以到達 dns dbdb容器,但不能到達0.0.0.0

因此,您必須將代碼更新為這樣

from model import Base

engine = create_engine('mysql+pymysql://test:test@db/test')

Base.metadata.create_all(engine)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM