From 69d5e8f0a91d483f41fb356cdf3445d2ac4f65e0 Mon Sep 17 00:00:00 2001 From: Felipe Gonzalez Date: Fri, 30 Aug 2024 17:23:56 -0500 Subject: [PATCH] fix: Fixed _pickle.UnpicklingError Error Details The migration process attempted to apply the migration 0003_drop_pickle but failed with the following traceback: ```bash Operations to perform: Target specific migration: 0003_drop_pickle, from constance Running migrations: Applying constance.0003_drop_pickle...Traceback (most recent call last): File "/code/manage.py", line 23, in main() File "/code/manage.py", line 19, in main execute_from_command_line(sys.argv) File "/code/.venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/code/.venv/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/code/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 413, in run_from_argv self.execute(*args, **cmd_options) File "/code/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 459, in execute output = self.handle(*args, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/core/management/base.py", line 107, in wrapper res = handle_func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/core/management/commands/migrate.py", line 357, in handle post_migrate_state = executor.migrate( ^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/db/migrations/executor.py", line 135, in migrate state = self._migrate_all_forwards( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards state = self.apply_migration( ^^^^^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/db/migrations/executor.py", line 255, in apply_migration state = migration.apply(state, schema_editor) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/code/.venv/lib/python3.12/site-packages/django/db/migrations/migration.py", line 132, in apply operation.database_forwards( File "/code/.venv/lib/python3.12/site-packages/django/db/migrations/operations/special.py", line 196, in database_forwards self.code(from_state.apps, schema_editor) File "/code/.venv/lib/python3.12/site-packages/constance/migrations/0003_drop_pickle.py", line 43, in migrate_pickled_data print(pickle.loads(value)) ^^^^^^^^^^^^^^^^^^^ _pickle.UnpicklingError: invalid load key, '{'. ``` The error indicates that there is an issue with unpickling data during the migration process. Specifically, it raises an `_pickle.UnpicklingError` with the message "invalid load key, '{'." This suggests that the data being loaded may be corrupted or not in the expected format. --- constance/migrations/0003_drop_pickle.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/constance/migrations/0003_drop_pickle.py b/constance/migrations/0003_drop_pickle.py index 726c5aa..91e584c 100644 --- a/constance/migrations/0003_drop_pickle.py +++ b/constance/migrations/0003_drop_pickle.py @@ -40,7 +40,10 @@ def migrate_pickled_data(apps, schema_editor) -> None: # pragma: no cover prefixed_key = f'{_prefix}{key}' value = _rd.get(prefixed_key) if value is not None: - redis_migrated_data[prefixed_key] = dumps(pickle.loads(value)) # noqa: S301 + try: + redis_migrated_data[prefixed_key] = dumps(pickle.loads(value)) # noqa: S301 + except pickle.UnpicklingError: + continue for prefixed_key, value in redis_migrated_data.items(): _rd.set(prefixed_key, value)