UnicodeDecodeError: 'utf-8' кодек не может декодировать байт 0x8c в позиции 119485: недопустимый начальный байт (при миграции sqlite3 на postgreSQL - djangocms)
Я пытался перенести базу данных моего проекта djangocms со стандартного sqlite3 на postgreSQL. Но в конце процесса я получил эту ошибку: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8c in position 119485: invalid start byte
.
Я не уверен, как справиться с этой проблемой, поскольку у меня нет опыта работы с базами данных, а большинство сообщений о подобных проблемах в интернете не связаны с базами данных, насколько я знаю.
Что я сделал, чтобы достичь этой точки:
Я создал локальный сайт djangocms с sqlite. Для переноса базы данных я следовал процедуре, описанной здесь : я сбросил базу данных в файл db.json, затем создал новую базу данных postgres в pgAdmin. Я изменил поле DATABASES в моем django settings.py, установил psycopg2 и выполнил python manage.py makemigrations
и python manage.py migrate
, а затем (в оболочке Python) я выполнил:
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()
перед python manage.py loaddata db.json
.
Мне также пришлось заново создать суперпользователя, который помог мне войти в админку djangocms. Но, как и ожидалось, мой сайт отсутствовал (и даже макет djangocms был неправильным).
Любая помощь будет очень признательна! Большое спасибо.
Вот следы:
(myWebsite) C:\Users\...\vEnv\myWebsite\project\website>python manage.py loaddata db.json
Traceback (most recent call last):
File " C:\Users\...\vEnv\myWebsite\project\website\manage.py", line 22, in <module>
main()
File " C:\Users\...\vEnv\myWebsite\project\website\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\base.py", line 371, in execute
output = self.handle(*args, **options)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\commands\loaddata.py", line 72, in handle
self.loaddata(fixture_labels)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\commands\loaddata.py", line 114, in loaddata
self.load_label(fixture_label)
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\management\commands\loaddata.py", line 172, in load_label
for obj in objects:
File " C:\Users\...\vEnv\myWebsite\lib\site-packages\django\core\serializers\json.py", line 67, in Deserializer
stream_or_string = stream_or_string.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8c in position 119485: invalid start byte
Что я делал раньше и результаты:
А когда я вхожу на сайт:
(myWebsite) C:\Users\...\vEnv\myWebsite\project\website>python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
August 25, 2021 - 17:21:21
Django version 3.1.11, using settings 'regSite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[25/Aug/2021 17:21:33] "GET /en/ HTTP/1.1" 200 13923
[25/Aug/2021 17:21:33] "GET /static/cms/css/3.8.0/cms.base.css HTTP/1.1" 302 0
[25/Aug/2021 17:21:33] "GET /static/cms/js/dist/3.8.0/bundle.toolbar.min.js HTTP/1.1" 302 0
[25/Aug/2021 17:21:33] "GET /en/static/cms/css/3.8.0/cms.base.css/ HTTP/1.1" 404 179
[25/Aug/2021 17:21:33] "GET /en/static/cms/js/dist/3.8.0/bundle.toolbar.min.js/ HTTP/1.1" 404 179
[25/Aug/2021 17:21:33] "GET /static/cms/css/3.8.0/cms.welcome.css HTTP/1.1" 302 0
[25/Aug/2021 17:21:34] "GET /en/static/cms/css/3.8.0/cms.welcome.css/ HTTP/1.1" 404 179
[25/Aug/2021 17:21:34] "GET /static/cms/js/dist/3.8.0/bundle.toolbar.min.js HTTP/1.1" 302 0
[25/Aug/2021 17:21:34] "GET /en/static/cms/js/dist/3.8.0/bundle.toolbar.min.js/ HTTP/1.1" 404 179
Вот ссылка , где вы можете найти шаги по изменению базы данных. Речь идет о SQLite на Mysql, но я думаю, что процесс будет очень похож.
Примечание: Не забудьте сделать резервную копию ваших данных, прежде чем что-то делать с вашей БД.
Благодаря Яну Шелвингтону и Тиму Робертсу, я открыл db в блокноте и использовал сохранение как с кодировкой UTF-8. Затем я запустил python manage.py loaddata db.json
снова.