Joe
Joe

Reputation: 11

How to recover Django databases after accidentally deleting the sqlite db file?

Problem

Ok as part of my stupidity , instead for doing 'flush' , I deleted sqlite.db file under by django project directory. After that none of my db commands were working, for ex,

Error Log

python manage.py showmigrations                                                                                                                                                          
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "django/lib/python3.4/site-            packages/django/core/management/__init__.py", line 353, in  execute_from_command_line
utility.execute()
File "django/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "django/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "django/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "django/lib/python3.4/site-packages/django/core/management/commands/showmigrations.py", line 36, in handle
return self.show_list(connection, options['app_labels'])
File "django/lib/python3.4/site- packages/django/core/management/commands/showmigrations.py", line 44, in   show_list
loader = MigrationLoader(connection, ignore_no_migrations=True)
File "django/lib/python3.4/site-packages/django/db/migrations/loader.py", line 49, in __init__
self.build_graph()
File "django/lib/python3.4/site-packages/django/db/migrations/loader.py", line 176, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "django/lib/python3.4/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
self.ensure_schema()
File "django/lib/python3.4/site-packages/django/db/migrations/recorder.py", line 56, in ensure_schema
with self.connection.schema_editor() as editor:
File "django/lib/python3.4/site-packages/django/db/backends/sqlite3/schema.py", line 25, in __enter__
self._initial_pragma_fk = c.fetchone()[0]

Similar commands

All of these commands are failing for similar reason \b


makemigrations migrate

Upvotes: 0

Views: 1032

Answers (1)

Joe
Joe

Reputation: 11

Solution

Changing line 25 of django/db/backends/sqlite3/schema.py from this;


self._initial_pragma_fk = c.fetchone()[0]

to this


self._initial_pragma_fk = 0  # c.fetchone()[0]

enables you to proceed with the migration.

https://code.djangoproject.com/ticket/26205?cversion=0&cnum_hist=2

Upvotes: 1

Related Questions