Reputation: 903
While running django when I use python manage.py migrate
I am encountering the following error after running python manage.py makemigrations
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 234, in handle
fake_initial=fake_initial,
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/migrations/executor.py", line 245, in apply_migration
state = migration.apply(state, schema_editor)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/migrations/operations/fields.py", line 112, in database_forwards
field,
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 433, in add_field
definition, params = self.column_sql(model, field, include_default=True)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 161, in column_sql
default_value = self.effective_default(field)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 233, in effective_default
return field.get_db_prep_save(self._effective_default(field), self.connection)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 789, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1429, in get_db_prep_value
value = self.get_prep_value(value)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1408, in get_prep_value
value = super().get_prep_value(value)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1268, in get_prep_value
return self.to_python(value)
File "/Users/rasikraj/Desktop/eb-virt/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1393, in to_python
params={'value': value},
django.core.exceptions.ValidationError: ["'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]
What could be the cause of this error and How can I ressolve this issue. I'm using python 3.7 and Django 2.2
Upvotes: 1
Views: 499
Reputation: 476493
Based on the error, there is a DateTimeField
[Django-doc] with as default=''
[Django-doc]. But that is not a valid default: a DateTimeField
should have store a datetime in the database (or None
in case the field is NULL
-able).
You thus should provide a valid default for that DateTimeField
, for example:
from django.utils import timezone
class SomeModel(models.Model):
my_field = DateTimeField(default=timezone.now)
or you can omit the default value, and run makemigrations
. In that case Django will ask if you want to provide a one-off default that will be applied to the records already in the database.
When you have changed the field you will need to remove the (invalid) migration file that was constructed where adding (or changing) that field took place, and make new migrations with manage.py makemigrations
. After all, this validation does not occur when constructing the migration files, and now that you migrate it will indeed error. If you later change your model, the invalid migration fill is still not performed, hence it will raise the same error again.
Upvotes: 1