AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?
運行django項目,出現上面錯誤的提示信息
我用的是 python3.10.11 + Django2.2.4
解決這個問題只需要改虛擬環境中的operations.py文件中的一行代碼即可。
錯誤復現:
Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Users\A\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1016, in _bootstrap_inner self.run() File "C:\Users\A\AppData\Local\Programs\Python\Python310\lib\threading.py", line 953, in run self._target(*self._args, **self._kwargs) File "C:\ENV\crm_pro\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper fn(*args, **kwargs) File "C:\ENV\crm_pro\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run self.check_migrations() File "C:\ENV\crm_pro\lib\site-packages\django\core\management\base.py", line 453, in check_migrations executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS]) File "C:\ENV\crm_pro\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "C:\ENV\crm_pro\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__ self.build_graph() File "C:\ENV\crm_pro\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph self.applied_migrations = recorder.applied_migrations() File "C:\ENV\crm_pro\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations if self.has_table(): File "C:\ENV\crm_pro\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()) File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\base\base.py", line 256, in cursor return self._cursor() File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\base\base.py", line 233, in _cursor self.ensure_connection() File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection self.connect() File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\base\base.py", line 197, in connect self.init_connection_state() File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\mysql\base.py", line 231, in init_connection_state if self.features.is_sql_auto_is_null_enabled: File "C:\ENV\crm_pro\lib\site-packages\django\utils\functional.py", line 80, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\mysql\features.py", line 82, in is_sql_auto_is_null_enabled cursor.execute('SELECT @@SQL_AUTO_IS_NULL') File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\utils.py", line 103, in execute sql = self.db.ops.last_executed_query(self.cursor, sql, params) File "C:\ENV\crm_pro\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query query = query.decode(errors='replace') AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?
找個這個文件:C:\ENV\crm_pro\lib\site-packages\django\db\backends\mysql\operations.py,根據自己電腦文件路徑查找,報錯上面有提示信息

把這行 query = query.decode(errors='replace') 注釋掉,然后換成 query = errors = 'replace',然后重新啟動項目即可。
溫馨提示:文件改完后記得保存一下。
修改后的代碼截圖如下:

看著這里問題就完美解決了!
突然感覺頭發還能長點了~
浙公網安備 33010602011771號