web-dev-qa-db-ja.com

データベースがQuerySet.dates()で無効な値を返しました

Wordpress=コンテンツをMezzanineのblog_blogpostにインポートした後、mysql 5.5を使用するUbuntu 12.04マシンでこのエラーが発生します。

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"

しかし、私はまだエラーユニットを取得していますテンプレートの行を取得します:

タグは次のとおりです。

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

それを解決するためにあなたの助けを感謝します。

53
qliq

エラーが発生したようです 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により更新

109

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
14

私のために働いたもの:

1。 'mysql'テーブルにタイムゾーン定義を入力します

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

2。テーブルのフラッシュ

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

。mysqlを再起動します

Sudo service mysql restart
12

Mavericksで同じ問題を抱えてここを通過する他の人には、Antonが言及したエラーが表示されていたので、取得し続けました。

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

だから私はmysql_tzinfo_to_sql tz_file tz_nameMySQL 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

6
markwalker_

Windowsの場合、次の手順を実行します。

  • サービスを停止する
  • MySQLが提供するファイル をダウンロードしますが、
    C:\ProgramData\MySQL\MySQL Server VERSION\data\mysql
    notin
    C:\Program Files\MySQL\MySQL Server VERSION\data
    少なくとも2014年のWindows 7。
  • また、C:\ Program Files\MySQL\MySQL Server VERSION\my.iniを変更して、default-time-zone = 'UTC' per ここのヒント 。次に、サービスを再起動します。
6
Tom

Django docs実際に この問題について話す

「データベースとpytzのタイムゾーン定義はインストールされていますか?」というエラーが表示されます。pytzがインストールされているので、問題は私のデータベースだと思いますか?

MySQLを使用している場合、タイムゾーン定義のロード手順については、MySQLノートの タイムゾーン定義 セクションを参照してください。

そのリンクをたどると、次のアドバイスが得られます。

Djangoのタイムゾーンサポートを使用する予定の場合は、mysql_tzinfo_to_sqlタイムゾーンテーブルをMySQLデータベースにロードします。これは、データベースごとではなく、MySQLサーバーに対して一度だけ実行する必要があります。

コマンドは次のとおりです。

mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql mysql
2
Flimm

Mysqlのタイムゾーンを読み込むことで問題が解決しました。 Windowsを使用している場合は、次の指示に従ってください。

ステップ#1:ビルド済みのタイムゾーンテーブルのデータファイルを含むパッケージをダウンロードします。http://dev.mysql.com/downloads/timezones。 html

ステップ#2:ダウンロードしたZipファイルをデスクトップ上のフォルダーに解凍します。

ステップ#3:MySQLサーバーを停止します。

XamppとWampの場合、GUIを使用するか、タスクマネージャーから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

0