web-dev-qa-db-fra.com

La table thumbnail_kvstore n'existe pas

Je ne parviens pas à afficher la vignette dans mon modèle. Je reçois cette erreur:

Django.db.utils.ProgrammingError: (1146, "La table 'ia_website.thumbnail_kvstore' n'existe pas")

  • Installé sorl_thumbnail-12.3
  • J'utilise MariaDB 10.1.11
  • Je n'ai aucune migration qui ne soit pas exécutée
  • Je peux voir l'image si je n'utilise pas la balise 'thumbnail'

Voici ce que j'ai fait

  • Dans settings.py:

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

    import sorl
    ...
        image = sorl.thumbnail.ImageField(upload_to='thumbnails', null=True)
    
  • Dans mon modèle

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

Après quelques recherches, il semble donc que la version 12.3 de sorl-thumbnail sur PyPI et Github soient différentes!

Si vous téléchargez le source directement à partir de PyPI -, vous constaterez que le package ne contient aucune migration. C'est la raison pour laquelle la table n'existe pas même si vous avez exécuté toutes les migrations .

Sur Github, le fichier de migration pour la version 12.3 existe définitivement.

Vous avez trois options:

  1. Créez la table en utilisant ./manage.py syncdb (uniquement si vous utilisez Django 1.8 ou une version antérieure)
  2. Installez directement à partir de Github pour la version 12.3
  3. Utiliser la version 12.4a1 de sorl-thumbnail qui inclut les migrations

Vous pouvez installer directement depuis Github comme suit:

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

la version 12.3 de sorl-thumbnail prend en charge la version 1.8 de Django, où la commande syncdb existe toujours. Si vous utilisez Django 1.8 ou une version inférieure, vous pouvez créer la table manquante en exécutant

python manage.py syncdb
37
Derek Kwok

Si juste

manage.py makemigrations 

ne crée aucune migration, essayez 

manage.py makemigrations thumbnail 
manage.py migrate

Cela va créer des migrations pour les vignettes, puis les migrer. Ça marche pour moi. J'utilise Django 1.9 et quelque 12.3. 

49
AlmasK89

Utilisez la version 12.3 de sorl-thumbnail. Suivez ces étapes

Supprimer la version actuelle

pip uninstall sorl-thumbnail

Installer la version 12.3

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

Migrations

python manage.py migrate
1
Guilherme IA

Pour moi, l'erreur vient de se produire lors de l'exécution de dumpdata.

Donc, si vous trouvez ce fil ici parce que vous avez essayé d'utiliser dumpdata, alors exclure l'application des miniatures sera probablement une solution de contournement simple:

python manage.py dumpdata --exclude thumbnail

Bien sûr, vous devriez suivre les autres réponses, si vous voulez que votre Django soit propre.

0
flix