You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows运行旧版Django项目报socket模块无AF_UNIX属性如何解决?

问题根因

AttributeError: module 'socket' has no attribute 'AF_UNIX' 报错的核心原因是Windows系统不支持Unix域套接字,你的Django项目数据库配置错误导致pymysql尝试用Unix套接字方式连接MySQL,才触发了该报错。你手动修改pymysql源码的操作属于错误处理方式,才会导致后续的参数类型报错。

解决步骤
  • 首先恢复你修改过的Python37\site-packages\pymysql\connections.py文件的原始内容,禁止直接修改第三方依赖包的源码,会导致环境一致性问题。
  • 打开Django项目根目录下的settings.py文件,找到DATABASES配置块。
  • 调整数据库连接配置:
    • HOST字段必须填写MySQL服务的IP地址,本地运行填127.0.0.1即可,不可留空、不可填写Unix套接字路径(类似/tmp/mysql.sock的内容)
    • PORT字段填写MySQL服务的端口,默认值为3306
    • 删掉OPTIONS配置项里的unix_socket相关配置(如果存在的话)
      正确配置参考如下:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的实际数据库名',
        'USER': '数据库登录用户名',
        'PASSWORD': '数据库登录密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
  • 确认本地MySQL服务已经正常启动后,重新执行启动命令python manage.py runserver 192.168.23.12:8000即可。
补充说明

你修改AF_UNIX为AF_INET后出现AF_INET address must be tuple, not str报错的原因是:AF_INET对应TCP协议连接,需要传入(IP地址, 端口)格式的元组作为连接参数,而原逻辑里Unix域套接字传入的是套接字文件路径字符串,类型不匹配才会触发该报错,进一步验证了修改源码的方式不可行。

内容的提问来源于stack exchange,提问作者Abc0Cba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:48:02