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:
C:\ProgramData\MySQL\MySQL Server VERSION\data\mysql
C:\Program Files\MySQL\MySQL Server VERSION\data
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