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 снова.

Вернуться на верх