解决 query = query.decode(errors=‘replace’) AttributeError: ‘str’ object has no attribute ‘decode’ Django项目,配置mysql数据的时候,安装mysql之后,配置完成后,运行django项目,出现错误提示信息 如何解决这个BUG
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
### python3.8+Django2.2
#### 新建一个项目之后,运行项目出现错误
python manage.py runserver
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 "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/utils/autoreload.py", line 54, in wrapper
fn(*args, **kwargs)
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
self.check_migrations()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/core/management/base.py", line 453, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/migrations/executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/migrations/loader.py", line 212, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 73, in applied_migrations
if self.has_table():
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/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 "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/base/base.py", line 256, in cursor
return self._cursor()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/base/base.py", line 233, in _cursor
self.ensure_connection()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
self.connect()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/base/base.py", line 197, in connect
self.init_connection_state()
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 231, in init_connection_state
if self.features.is_sql_auto_is_null_enabled:
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/utils/functional.py", line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/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 "/home/victoire/.virtualenvs/enzo/lib/python3.8/site-packages/django/db/backends/utils.py", line 103, in execute
sql = self.db.ops.last_executed_query(self.cursor, sql, params)
File "/home/victoire/.virtualenvs/enzo/lib/python3.8/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'
从网上找了好多解决方法 最后这个方法适合我 因为我是在虚拟环境下出的错 你需要在你的虚拟环境下找到这个文件 把your_env_name替换成你的虚拟环境名字
~/.virtualenvs/your_env_name/lib/python3.8/site-packages/django/db/backends/mysql$ vim operations.py
找到
query = query.decode(errors='replace')
换成
query = errors='replace'
保存退出后 再次运行项目 问题就解决了
- 原文链接:https://blog.csdn.net/weixin_49509128/article/details/111570928