Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Table thumbnail_kvstore doesn't exist

Tags:

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 %}
    
like image 284
Marc Avatar asked Feb 01 '16 17:02

Marc


2 Answers

If just

manage.py makemigrations 

doesn't create any migrations, try

manage.py makemigrations thumbnail 
manage.py migrate

This will create migrations for thumbnail and then migrate them. It works for me. I am using Django 1.9 and sorl.thumbnail 12.3.

like image 159
AlmasK89 Avatar answered Nov 09 '22 05:11

AlmasK89


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
like image 21
Derek Kwok Avatar answered Nov 09 '22 07:11

Derek Kwok