Search code examples
pythondjangosorl-thumbnail

Table thumbnail_kvstore doesn't exist


I can't get the thumbnail displayed in my template. I get this error:

django.db.utils.ProgrammingError: (1146, "Table 'ia_website.thumbnail_kvstore' doesn't exist")

  • Installed sorl_thumbnail-12.3
  • I'm using MariaDB 10.1.11
  • I have no migration that are not executed
  • I can see the image if I don't use the 'thumbnail' tag

Here is what I did

  • In settings.py:

    INSTALLED_APPS = [
        ...
        'sorl.thumbnail',
    ]
    
    THUMBNAIL_DEBUG = TRUE
    
  • In models.py

    import sorl
    ...
        image = sorl.thumbnail.ImageField(upload_to='thumbnails', null=True)
    
  • In my template

    {% thumbnail content.image "237x110" as im %}
        <img src="{{ im.url }}">
    {% endthumbnail %}
    

Solution

  • So after some research, it looks like the version 12.3 of sorl-thumbnail on PyPI and Github are different!

    If you download the source directly from PyPI - you will find that the package doesn't contain any migrations. This is the reason the table doesn't exist even though you've run all the migrations.

    On Github, the migration file for version 12.3 definitely exists.

    You have three options:

    1. Create the table using ./manage.py syncdb (only if you're running Django 1.8 or below)
    2. Install directly from Github for version 12.3
    3. Use version 12.4a1 of sorl-thumbnail which includes migrations

    You can install from Github directly as follows:

    pip install git+git://github.com/mariocesar/[email protected]
    

    sorl-thumbnail version 12.3 supports up to Django version 1.8, where the syncdb command still exists. If you're running Django 1.8 or lower, you can create the missing table by running

    python manage.py syncdb