La firebase database a renvoyé une valeur non valide dans QuerySet.dates ()

Je reçois cette erreur sur ma machine Ubuntu 12.04 avec mysql 5.5 après avoir importé du contenu WordPress sur blog_blogpost de Mezzanine.

ValueError at /admin/blog/blogpost/ Database returned an invalid value in QuerySet.dates(). Are time zone definitions and pytz installed? Request Method: GET Request URL: http://127.0.0.1:8000/admin/blog/blogpost/ Django Version: 1.6.1 Exception Type: ValueError Exception Value: Database returned an invalid value in QuerySet.dates(). Are time zone definitions and pytz installed? Exception Location: /home/me/.mezenv/local/lib/python2.7/site-packages/django/db/models/sql/comstackr.py in results_iter, line 1107 Python Executable: /home/me/.mezenv/bin/python Python Version: 2.7.3 Python Path: [u'/home/me', '/home/me/sai', '/home/me/.mezenv/local/lib/python2.7/site-packages/dissortingbute-0.6.24-py2.7.egg', '/home/me/.mezenv/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/me/.mezenv/lib/python2.7', '/home/me/.mezenv/lib/python2.7/plat-linux2', '/home/me/.mezenv/lib/python2.7/lib-tk', '/home/me/.mezenv/lib/python2.7/lib-old', '/home/me/.mezenv/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/home/me/.mezenv/local/lib/python2.7/site-packages'] Server time: Sat, 25 Jan 2014 13:44:11 +0100 Error during template rendering In template /home/me/.mezenv/local/lib/python2.7/site-packages/grappelli_safe/templates/admin/change_list.html, error at line 140 

J’ai ajouté à mon local_settings.py

 import pytz from pytz import * 

et également défini le fuseau horaire dans my.cnf [mysqld]

 default-time-zone = "+01:00" 

mais je reçois toujours l’erreur unitl je reçois la ligne dans le modèle:

le tag est:

140 {% block date_hierarchy%} {% date_hierarchy cl%} {% endblock%}

Appréciez votre aide pour le résoudre.

On dirait que l’erreur a causé les changements de fonctionnalité de fuseau horaire de Django 1.6 . Les documents mentionnent maintenant cette erreur spécifiquement ( rapport de bogue , lien vers docs ).

Vous devez charger les tables de fuseau horaire dans mysql ( http://dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html ). Essayez d’exécuter sur votre serveur de firebase database:

 mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -D mysql -u root -p 

Et puis exécutez “flush tables” ou “flush query cache”, sinon le problème risque de ne pas disparaître même si vous avez chargé les bonnes données de fuseau horaire:

 mysql -u root -p -e "flush tables;" mysql 

mis à jour par @qris

Pour les utilisateurs de MacOS, j’ai trouvé la solution ici (dans un commentaire):

 mysql_tzinfo_to_sql /usr/share/zoneinfo | sed -e "s/Local time zone must be set--see zic manual page/local/" | mysql -u root mysql 

Parce que sur MacOS, nous avons une erreur qui ressemble à ceci:

 $ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u roomysql Warning: Unable to load '/usr/share/zoneinfo/+VERSION' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it. Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it. ERROR 1406 (22001) at line 38981: Data too long for column 'Abbreviation' at row 1 

Ce qui a fonctionné pour moi:

1. Remplissez les définitions de fuseau horaire dans la table ‘mysql’

 mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql 

2. tables de chasse

 mysql -u root -p -e "flush tables;" mysql 

3. Redémarrez mysql

 sudo service mysql restart 

Pour tous ceux qui passaient ici avec le même problème sur Mavericks, je recevais l’erreur mentionnée par Anton par laquelle je continuais à avoir;

 ERROR 1406 (22001) at line 38981: Data too long for column 'Abbreviation' at row 1 

J’ai donc utilisé mysql_tzinfo_to_sql tz_file tz_name des documents MySQL pour charger les fuseaux horaires spécifiques que je voulais;

 mysql_tzinfo_to_sql /usr/share/zoneinfo/GMT GMT | mysql -u root -p mysql mysql_tzinfo_to_sql /usr/share/zoneinfo/UTC UTC | mysql -u root -p mysql 

Et maintenant, Django ne retourne pas d’erreurs alors je suis content: D

Pour Windows, procédez comme suit:

  • arrêter le service
  • télécharger les fichiers fournis par MySQL mais notez qu’ils vont dans
    C:\ProgramData\MySQL\MySQL Server VERSION\data\mysql
    pas en
    C:\Program Files\MySQL\MySQL Server VERSION\data
    au moins sur Windows 7 à partir de 2014.
  • J’ai également modifié C: \ Program Files \ MySQL \ MySQL Server VERSION \ my.ini pour append default-time-zone = 'UTC' selon les astuces ici . Puis redémarrez le service.

Les documents de Django parlent de ce problème :

J’ai une erreur “Les définitions de fuseau horaire pour votre firebase database et pytz sont-elles installées?”

Si vous utilisez MySQL, consultez la section Définitions des fuseaux horaires des notes de MySQL pour obtenir des instructions sur le chargement des définitions de fuseau horaire.

Si vous suivez ce lien, vous obtenez ce conseil:

Si vous prévoyez d’utiliser le support de fuseau horaire de Django, utilisez mysql_tzinfo_to_sql pour charger les tables de fuseaux horaires dans la firebase database MySQL. Cela doit être fait une seule fois pour votre serveur MySQL, pas par firebase database.

Voici la commande:

 mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql mysql 

Le chargement du fuseau horaire pour Mysql a résolu le problème pour moi. Si vous êtes sur Windows, suivez ces instructions:

Etape n ° 1: Téléchargez le package contenant les fichiers de données des tables de fuseaux horaires prédéfinies. http://dev.mysql.com/downloads/timezones.html

Étape # 2: Décompressez le fichier ZIP téléchargé dans un dossier de votre bureau.

Étape # 3: Arrêtez le serveur MySQL.

Pour Xampp et Wamp, utilisez leur interface graphique ou arrêtez le service mysql du gestionnaire de tâches.

Étape # 4: Ouvrez le sous-répertoire mysql du répertoire de données de votre serveur MySQL.

Pour moi c’est C:\xampp\mysql\data\mysql

Étape 5: écrasez les fichiers de données de fuseau horaire avec la version téléchargée.

Copiez les 15 fichiers de données de votre dossier décompressé et collez-les dans le dossier de données de la firebase database du système mysql. Remplacez tous ces fichiers .frm, .MYD et .MYI.

Étape # 6: Redémarrez le serveur MySQL.

Et le travail est terminé 🙂

source: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html