Je reçois cette erreur sur ma machine Ubuntu 12.04 avec mysql 5.5 après avoir importé du contenu Wordpress vers le 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/compiler.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/distribute-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 j'obtiens toujours l'erreur unitl J'obtiens la ligne dans le modèle:
la balise est:
140 {% block date_hierarchy%} {% date_hierarchy cl%} {% endblock%}
Appréciez votre aide pour le résoudre.
On dirait une erreur causée la fonctionnalité de fuseau horaire de Django 1.6 change . Les documents mentionnent désormais spécifiquement cette erreur ( rapport de bogue , lien vers les documents ).
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 base de données:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -D mysql -u root -p
Ensuite, exécutez "flush tables" ou "flush query cache", sinon le problème peut ne pas disparaître même si vous avez chargé les données de fuseau horaire correctes:
mysql -u root -p -e "flush tables;" mysql
mis à jour par @qris
Pour les utilisateurs de MacOS, j'ai trouvé une solution ici (en 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 le tableau 'mysql'
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
2. Flush tables
mysql -u root -p -e "flush tables;" mysql
. Redémarrez mysql
Sudo service mysql restart
Pour toute autre personne passant par ici avec le même problème sur Mavericks, j'obtenais l'erreur mentionnée par Anton selon laquelle je continuais à obtenir;
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
à partir du MySQL docs 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 renvoie pas d'erreurs donc 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'
par les astuces ici . Redémarrez ensuite le service.Les Django docs en fait parler de ce problème :
Je reçois une erreur "Les définitions de fuseau horaire pour votre base de données et pytz sont-elles installées?" Pytz est installé, donc je suppose que le problème est ma base de données?
Si vous utilisez MySQL, consultez la section Définitions de fuseau horaire des notes 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 la prise en charge du fuseau horaire de Django, utilisez
mysql_tzinfo_to_sql
pour charger les tables de fuseaux horaires dans la base de données MySQL. Cela doit être fait une seule fois pour votre serveur MySQL, pas par base de données.
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 sous Windows, suivez ces instructions:
Étape # 1: Téléchargez le package qui contient les fichiers de données des tables de fuseaux horaires prédéfinies. http: //dev.mysql. com/téléchargements/timezones.html
Étape # 2: Décompressez le fichier Zip téléchargé dans un dossier sur votre bureau.
Étape # 3: Arrêtez le serveur MySQL.
Pour Xampp et Wamp, utilisez leur interface graphique ou arrêtez le service mysql à partir du Gestionnaire des 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: Remplacez les fichiers de données de fuseau horaire par 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 base de données système mysql. Remplacez tous ces fichiers .frm, .MYD et .MYI.
Étape # 6: Redémarrez le serveur MySQL.
Et le travail est fait :-)
source: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html