首页 > 解决方案 > TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。/*我在简单的登录 django 项目中遇到的错误*/

问题描述

系统检查未发现任何问题(0 静音)。

您有 18 个未应用的迁移。在您为应用程序应用迁移之前,您的项目可能无法正常工作:admin、auth、contenttypes、sessions。运行“python manage.py migrate”以应用它们。2021 年 2 月 17 日 - 19:52:27 Django 版本 3.1.6,使用设置 'felix.settings' 在http://127.0.0.1:8000/启动开发服务器 使用 CTRL-BREAK 退出服务器。C:\Users\FELIX\OneDrive\Desktop\Projects\django login2\felix\felix\settings.py 已更改,正在重新加载。使用 StatReloader 监视文件更改正在执行系统检查...

系统检查未发现任何问题(0 静音)。线程 django-main-thread 中的异常:回溯(最后一次调用):文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\threading.py”,第 950 行,在 _bootstrap_inner self. run() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\threading.py”,第 888 行,在运行 self._target(*self._args, **self._kwargs) 文件中“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\autoreload.py”,第 53 行,在包装器 fn(*args, **kwargs) 文件中“C :\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\commands\runserver.py”,第 121 行,inner_run self.check_migrations() 文件“C:\用户\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py",init self.loader = MigrationLoader(self.connection) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\loader.py”,第 53 行,在初始化 self.build_graph() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\loader.py”,第 216 行,在 build_graph self.applied_migrations = recorder.applied_migrations() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\recorder.py”,第 77 行,如果 self.has_table 则在应用迁移中(): 文件 "C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\migrations\recorder.py",第 55 行,在带有 self.connection.cursor 的 has_table 中() 作为光标:文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\asyncio.py”,第 26 行,内部返回 func(*args, **kwargs) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\base.py”,第 259 行,在光标中返回 self._cursor() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\base.py ",第 235 行,在游标 self.ensure_connection() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\asyncio.py”,第 26 行,内部返回 func(*args , **kwargs) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\base.py”,第 219 行,在 ensure_connection self. connect() 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\asyncio.py”,第 26 行,内部返回 func(*args, ** kwargs)文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\base\base.py”,第 200 行,连接 self.connection = self .get_new_connection(conn_params) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\asyncio.py”,第 26 行,在内部返回 func(*args, **kwargs) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\backends\mysql\base.py”,第 234 行,在 get_new_connection 返回 Database.connect(**conn_params) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\MySQLdb_init .py”,第 130 行,在 Connect 返回 Connection(*args, **kwargs) 文件“C:\Users\FELIX\AppData\Local\Programs\Python\Python39\lib\site-packages\MySQLdb\connections.py ",第 185 行,在init super(). init (*args, **kwargs2) TypeError: connect() argument 4 must be str, not WindowsPath

标签: django

解决方案


I got similar error information while doing makemigrations, and str() worked.

# BASE_DIR = Path(__file__).resolve().parent.parent
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': str(BASE_DIR / 'my.cnf')
        }
    }
}

推荐阅读