Django执行migrate遇TypeError:connect参数需str而非WindowsPath
解决Django migrate时的TypeError: connect() argument 4 must be str, not WindowsPath错误
错误原因
你混淆了SQLite与MySQL的数据库配置逻辑:
- SQLite的
NAME是数据库文件路径(可用BASE_DIR / 文件名生成Path对象) - MySQL的
NAME需要的是你在MySQL中创建的schema名称(字符串),但你用BASE_DIR / 'db.crudpy'生成了WindowsPath对象,导致类型不匹配触发报错。
另外配置里还有个潜在问题:Django数据库配置的用户字段是USER,不是USERNAME,这个会导致后续无法正确连接数据库。
修正步骤
- 修改
settings.py中的数据库配置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'crudpy', # 直接填写你创建的schema名称(字符串) 'USER': 'root', # 将USERNAME改为USER 'PASSWORD': '1234', 'PORT': 3306, # 端口可使用整数或保留字符串 'HOST': 'localhost' } } - 保存配置后,重新执行迁移命令:
python manage.py migrate
内容的提问来源于stack exchange,提问作者Wyndham Keith
相关产品推荐
相关产品推荐

