Невозможно получить данные из MySQL и отобразить их в Django - PullRequest
0 голосов
/ 03 февраля 2020

Я запустил проект Django для поддержки сервиса. Тогда я получил следующую ошибку.

UnicodeDecodeError at /register/
'utf-8' codec can't decode byte 0xb7 in position 3: invalid start byte 

Это была очень простая операция, которая отображала страницу с шаблоном. Django говорит, что произошла ошибка в файле шаблона, но он был декодирован как UTF-8.

Рабочие среды:

- Python 3.6.10 installed by pyenv.
- Django 2.1.8
- macOS Catalina

Обновление !!

В журнале ошибок я обнаружил журнал erorr о соединении mysql , Я настроил тест mysql DB внешне в AWS RDS. Так что это был бы ключ.

........
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/models/query.py" in _fetch_all
  1186.             self._result_cache = list(self._iterable_class(self))
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/models/query.py" in __iter__
  54.         results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1065.             cursor.execute(sql, params)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  100.             return super().execute(sql, params)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/backends/utils.py" in execute
  68.         return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute_with_wrappers
  77.         return executor(sql, params, many, context)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/backends/utils.py" in _execute
  85.                 return self.cursor.execute(sql, params)
File "/Users/jinhoyoo/.pyenv/versions/3.6.10/envs/youha/lib/python3.6/site-packages/django/db/backends/mysql/base.py" in execute
  71.             return self.cursor.execute(query, args)
........

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

B7 - это шестнадцатеричное значение для "средней точки" в латинице 1. Похоже, ваш клиент использует latin1, но ваша база данных ожидает utf8.

См. "Best Practice" в Проблемы с символами UTF-8; то, что я вижу, не то, что я сохранил

0 голосов
/ 03 февраля 2020

Я нашел причину. MySQL 8.0.19 версия имеет проблему. Вы должны использовать mysql версию под 8.0.18 в качестве клиента.

Вы можете установить mysql клиент только по brew install mysql-client, тогда вы получите mysql клиент 8.0.18. Затем переустановите модуль mysqlclient python, выполнив команду https://github.com/PyMySQL/mysqlclient-python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...