繁体   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