Неверный идентификатор модели при переносе данных из sqlite3 в PostgreSQL
Я пытаюсь перенести свое приложение Wagtail с sqlite3 на PostgreSQL, но получаю ошибку, говорящую
Недопустимый идентификатор модели: 'wagtailsearch.sqliteftsindexentry'
Это происходит, когда я набираю команду:
python manage.py loaddata data.json
Я получаю эту ошибку:
Traceback (most recent call last):
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\apps\config.py", line 235, in get_model
return self.models[model_name.lower()]
KeyError: 'sqliteftsindexentry'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\serializers\python.py", line 181, in _get_model
return apps.get_model(model_identifier)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\apps\registry.py", line 213, in get_model
return app_config.get_model(model_name, require_ready=require_ready)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\apps\config.py", line 237, in get_model
raise LookupError(
LookupError: App 'wagtailsearch' doesn't have a 'sqliteftsindexentry' model.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\mdrift\manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\base.py", line 448, in execute
output = self.handle(*args, **options)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\commands\loaddata.py", line 102, in handle
self.loaddata(fixture_labels)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\management\commands\loaddata.py", line 163, in loaddata
self.load_label(fixture_label)
oad_label
for obj in objects:
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\serializers\json.py", line 70, in Deserializer
yield from PythonDeserializer(objects, **options)
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\serializers\python.py", line 103, in Deserializer
Model = _get_model(d["model"])
File "C:\Users\DELL\Desktop\Mdrift_Wagtail\venv\lib\site-packages\django\core\serializers\python.py", line 183, in _get_model
raise base.DeserializationError(
django.core.serializers.base.DeserializationError: Problem installing fixture 'C:\Users\DELL\Desktop\Mdrift_Wagtail\mdrift\data.json': Invalid model identifier: 'wagtailsearch.sqliteftsindexentry'
Таблица wagtailsearch.sqliteftsindexentry используется для хранения индексированных данных для поиска - это отличается в разных базах данных, поэтому в Postgres этой таблицы не существует. Вы должны исключить ее из команды dumpdata
, используя опцию --exclude=wagtailsearch.sqliteftsindexentry
- это даст вам дамп .json, который можно загрузить в Postgres.
После успешной миграции запустите ./manage.py update_index
, чтобы заполнить поисковый индекс для Postgres.