question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Field 'file_hash' doesn't have a default value

See original GitHub issue

Issue Summary

New file_hash field in wagtailimages Image model having issue with mysql database (v5.7) when uploading images through wagtail admin.

Steps to Reproduce

  1. Install following version described in Technical Details
  2. Try to upload an image.

After looking into wagtail source it seems like, this issue lies in field definition

file_hash = models.CharField(max_length=40, blank=True, editable=False)

Possibly MySQL strict mode is throwing error as no default value has been provided for file_hash

Technical details

  • Python version: 3.6
  • Django version: 2.0.8
  • Wagtail version: 2.1.3
  • MySQL version: 5.7

Stack trace

Traceback (most recent call last):
  File ".venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File ".venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 71, in execute
    return self.cursor.execute(query, args)
  File ".venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File ".venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File ".venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 247, in execute
    res = self._query(query)
  File ".venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 412, in _query
    rowcount = self._do_query(q)
  File ".venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 375, in _do_query
    db.query(q)
  File ".venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 276, in query
    _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1364, "Field 'file_hash' doesn't have a default value")

Possible Solution

For now I have manually altered the database with a default value -

Alter table wagtailimages_image modify column file_hash varchar(40) not null default '';

Field declaration might be like following, so that either a default value is there or null is accepted

file_hash = models.CharField(max_length=40, blank=True, null=True, editable=False)

Or

file_hash = models.CharField(max_length=40, blank=True, default='', editable=False)

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:6 (1 by maintainers)

github_iconTop GitHub Comments

2reactions
tombolacommented, Nov 26, 2018

Also of note, If you have upgraded to/past 2.2, and you have any custom image models you will need to run makemigrations to add the file hash for the model.

1reaction
shimulchcommented, Aug 16, 2018

@gasman You were right. Somehow our pipenv lock file were changed. Which led to different version of wagtail when migrating between servers.

Sorry for not checking out that. Anyway, we love wagtail.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Field 'id' doesn't have a default value? - Stack Overflow
I am making a database for games of cards to use in my homepage. I am using MySQL Workbench on Windows. The error...
Read more >
How to Use the Get-FileHash PowerShell Cmdlet
The default value is SHA256 for all versions of PowerShell, if no other algorithm is specified. Computing the hash value of a single...
Read more >
Working with AppLocker rules (Windows) - Microsoft Learn
This topic for IT professionals describes AppLocker rule types and how to work with them for your application control policies.
Read more >
General error: field doesn't have a default value - Laracasts
General error: field doesn't have a default value. Here's one of the method I have in my model. Copy Code public function addUser($account, ......
Read more >
What is Hashing and How Does it Work? - SentinelOne
Hashes cannot be reversed, so simply knowing the result of a file's hash from a hashing algorithm ... However, that doesn't mean hash...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found