为了账号安全,请及时绑定邮箱和手机立即绑定

mysql.connector.errors.DatabaseError:

mysql.connector.errors.DatabaseError:

婷婷同学_ 2022-05-11 14:31:39
我正在创建一个包含烧瓶应用程序和 mysql 的 docker 文件。现在应该在 localhost 上运行。烧瓶应用程序正在运行,mysql 服务器也在运行。我能够连接到mysql服务器。该应用程序无法连接到数据库。Python代码连接def establish_connection():    config = {        'user': 'root',        'password': 'root',        'host': '127.0.0.1',        'port': '3306',        'database': 'persist'    }    cnx: str = mysql.connector.connect(**config)    print(cnx)    return cnxDockerfileFROM python:3.7.4-busterWORKDIR /stocksiteENV FLASK_APP main.pyENV FLASK_RUN_HOST 0.0.0.0EXPOSE 5000 32000 3306COPY . .COPY requirements.txt requirements.txtRUN pip install -r requirements.txtCOPY . .CMD ["flask", "run"]码头工人-compose.ymlversion: '3'services:  web:    build: .    ports:      - "5000:5000"  db:    image: mysql    container_name: db    ports:      - "32000:3306"    environment:      MYSQL_ROOT_PASSWORD: root    volumes:      - ./data/db:/docker-entrypoint-initdb.d我收到以下错误:mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

Docker compose 服务可用于使用其名称的其他服务。您的db服务可以使用从您的web容器连接到db:3306


config = {

    'user': 'root',

    'password': 'root',

    'host': 'db',

    'port': '3306',

    'database': 'persist'

}


查看完整回答
反对 回复 2022-05-11
?
慕森卡

TA贡献1806条经验 获得超8个赞

在 docker-compose 中,您将容器内 db的端口3306映射到主机上的端口32000 。


在应用程序中,您应该使用端口32000而不是3306。


def establish_connection():

config = {

    'user': 'root',

    'password': 'root',

    'host': '127.0.0.1',

    'port': '32000',

    'database': 'persist'

}


cnx: str = mysql.connector.connect(**config)

print(cnx)

return cnx


查看完整回答
反对 回复 2022-05-11
  • 2 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信