База данных вернула недопустимое значение в QuerySet.dates()

Я получаю эту ошибку на моей машине Ubuntu 12.04 с mysql 5.5 после того, как импортировал содержимое Wordpress в Mezzanine blog_blogpost.

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

Я добавил в свой файл local_settings.py

import pytz
from pytz import *

а также определенный часовой пояс в my.cnf [mysqld]

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

но я все еще получаю сообщение об ошибке unitl Я получаю строку в шаблоне:

тег:

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

Оцените свою помощь, чтобы решить эту проблему.

Ответ 1

Похоже, ошибка вызвана изменениями в часовом поясе Django 1.6. Документы теперь упоминают об этой ошибке специально (сообщение об ошибке, ссылка на документы).

Вы должны загрузить таблицы часовых поясов в mysql (http://dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html). Попробуйте выполнить на вашем сервере базы данных:

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

А затем запустите "очистить таблицы" или "очистить кэш запросов", иначе проблема может не исчезнуть, даже если вы загрузили правильные данные часового пояса:

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

обновлено @qris

Ответ 2

Для пользователей MacOS я нашел решение здесь (в комментарии):

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

Поскольку в MacOS мы имеем ошибку, это выглядит так:

$ 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

Ответ 3

Что сработало для меня:

1. Заполните определения часового пояса в таблице "mysql"

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

2. Таблицы стирания

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

3. Перезапустить mysql

sudo service mysql restart

Ответ 4

Для кого-то еще, проходящего здесь с той же проблемой в Mavericks, я получал ошибку, упомянутую Антоном, в которой я продолжал получать;

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

Поэтому я использовал mysql_tzinfo_to_sql tz_file tz_name из docs для загрузки определенных часовых поясов, которые я хотел;

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

И теперь Django не возвращает ошибки, поэтому я счастлив: D

Ответ 5

В Windows выполните следующие действия:

  • остановить службу
  • загрузите файлы, предоставленные MySQL, но обратите внимание, что они идут в
    C:\ProgramData\MySQL\MySQL Server VERSION\data\mysql
    не в
    C:\Program Files\MySQL\MySQL Server VERSION\data
    по крайней мере на Windows 7 с 2014 года.
  • Я также изменил C:\Program Files\MySQL\MySQL Server VERSION\my.ini, чтобы добавить default-time-zone = 'UTC' за советы здесь, Затем перезапустите службу.

Ответ 6

Документы Django фактически рассказывают об этой проблеме:

Я получаю сообщение об ошибке "Определены ли определения часовых поясов для вашей базы данных и pytz?" pytz установлен, поэтому я думаю, проблема в моей базе данных?

Если вы используете MySQL, см. раздел Определения часовых поясов в примечаниях MySQL для инструкций по загрузке определений часовых поясов.

Если вы следуете этой ссылке, вы получите этот совет:

Если вы планируете использовать поддержку часовых поясов Djangos, используйте mysql_tzinfo_to_sql для загрузки таблиц часовых поясов в базу данных MySQL. Это нужно сделать только один раз для вашего сервера MySQL, а не для каждой базы данных.

Здесь команда:

mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql mysql

Ответ 7

Часовой пояс загрузки для Mysql решил проблему для меня. Если вы находитесь в окнах, следуйте этим инструкциям:

Шаг # 1: Загрузите пакет, содержащий файлы данных из предварительно созданных таблиц часовых поясов.  http://dev.mysql.com/downloads/timezones.html

Шаг # 2: разархивируйте загруженный ZIP файл в папку на рабочем столе.

Шаг №3: Остановите сервер MySQL.

Для Xampp и Wamp используйте свой графический интерфейс или остановите службу mysql в диспетчере задач.

Шаг # 4: Откройте подкаталог mysql вашего каталога данных сервера MySQL.

Для меня это C:\xampp\mysql\data\mysql

Шаг # 5: Перезапишите файлы данных часовых поясов с загруженной версией.

Скопируйте все 15 файлов данных из распакованной папки и вставьте в папку данных для системной базы данных mysql. Перезапишите все эти файлы .frm,.MYD и .MYI.

Шаг # 6: Перезапустите сервер MySQL.

И работа выполнена: -)

источник: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html