TypeError: connect()参数4必须是str,而不是WindowsPath./*错误,我得到在我的简单登录


System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
February 17, 2021 - 19:52:27
Django version 3.1.6, using settings 'felix.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
C:UsersFELIXOneDriveDesktopProjectsdjango login2felixfelixsettings.py changed, reloading.
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libthreading.py", line 950, in _bootstrap_inner
self.run()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libthreading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangoutilsautoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangocoremanagementcommandsrunserver.py", line 121, in inner_run
self.check_migrations()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangocoremanagementbase.py", line 459, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbmigrationsexecutor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbmigrationsloader.py", line 53, in __init__
self.build_graph()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbmigrationsloader.py", line 216, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbmigrationsrecorder.py", line 77, in applied_migrations
if self.has_table():
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbmigrationsrecorder.py", line 55, in has_table
with self.connection.cursor() as cursor:
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangoutilsasyncio.py", line 26, in inner
return func(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbbackendsbasebase.py", line 259, in cursor
return self._cursor()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbbackendsbasebase.py", line 235, in _cursor
self.ensure_connection()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangoutilsasyncio.py", line 26, in inner
return func(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbbackendsbasebase.py", line 219, in ensure_connection
self.connect()
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangoutilsasyncio.py", line 26, in inner
return func(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbbackendsbasebase.py", line 200, in connect
self.connection = self.get_new_connection(conn_params)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangoutilsasyncio.py", line 26, in inner
return func(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesdjangodbbackendsmysqlbase.py", line 234, in get_new_connection
return Database.connect(**conn_params)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesMySQLdb__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "C:UsersFELIXAppDataLocalProgramsPythonPython39libsite-packagesMySQLdbconnections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
TypeError: connect() argument 4 must be str, not WindowsPath

我在执行makemigmigrations时得到了类似的错误信息,并且str()工作。

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

TypeError: connect()参数4必须是str,而不是WindowsPath, parence reference a que la línea 4 de la conexión tiene un formato no estándar para path, solo es revisar el formato de la conexión a DB,穷ejemplo:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project_django_1',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': 3306,
}
}

当您使用mysql时,您不需要提供路径,只需创建数据库并输入数据库名称

'ENGINE': 'django.db.backends.mysql',
'NAME': 'your-database-name',

设置mysql数据库设置了吗?请检查数据库设置是否正确。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'mysql username',
'PASSWORD': 'mysql user password',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}

最新更新