回答:
これは、タイムゾーンテーブルをmysqlにロードしていない場合に発生します。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
受け入れられた回答(MySQLの開発サイトでも同じ)でコマンドを実行した後、コマンドが次のようなタイムゾーン間で変換できなかった理由を理解しようとしばらく時間を費やした後、このスレッドを見つけました
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time
これは、OS X上の2つのファイルが問題を引き起こすことがあることが判明:/usr/share/zoneinfo/Factory
と/usr/share/zoneinfo/+VERSION
。
修正... /usr/share/zoneinfo/.bak/
コマンドを許可するなど、これらのファイルを一時的に別の場所に移動する
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
予想されるすべてのタイムゾーン情報を完全に入力します。
これは、MySQLのインストール済みバージョンのバグである場合とそうでない場合があります。
$ mysql --version
mysql Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using EditLine wrapper
私はまた、 STRICT_MODE
ます。
いずれにせよ、これで修正を探している人にとっていくつかの頭痛が軽減されることを願っています。
Windows環境とは別に、次の方法でタイムゾーンを設定できます。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Windows環境で、
1. download Time zone description tables from
http://dev.mysql.com/downloads/timezones.html
2. Stop MySQL server
3. Put then inside Mysql installation package
(つまり、C:\ Program Files \ MySQL \ data \ mysql) `
4. Start MySQL server
..あなたの仕事は終了しました。
それでもNULL
、CONVERT_TZ
これらのデータベーステーブルをダウンロードしてmysqlデータベースに挿入する必要がある場合は、http: //www.4shared.com/folder/Toba2qu-/Mysql_timezone.html
今、あなたは問題が解決されます.. :)
WindowsでMySqlを使用している場合は、タイムゾーンデータをmysqlスキーマにロードする必要があります。これが良いHOWTOです:http : //www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
これを行わないと、関数CONVERT_TZは入力タイムゾーン(例: 'UTC'、 'Asia / Jakarta')を認識せず、単にNULLを返します。
MAMP PRO
Terminal
cd /usr/share/zoneinfo/
sudo mv +VERSION ~/Desktop
cd /applications/MAMP/Library/bin
sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
1)Windowsでは、C:\Program Files\MySQL\
他の回答のようにデータフォルダーはありません。
2)その場合は、を探しますC:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
。通常、このフォルダは非表示になっているため、表示されない場合がありますC:\ProgramData\
。
3)ここで説明されているように、[表示]タブの[設定]を変更して、隠しファイルとフォルダを表示します。https://irch.info/index.php?pg = kb.page&id = 133
4)Windowsの[スタート]ボタンで「サービス」を検索して、MySQLサービスを停止します。
5)次に、timezone_2017c_posix.zipを解凍し、その中のファイルをコピーします(ファイルを直接コピーし、フォルダー全体をコピーしないでください)。
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6)MySQL 5.7の場合、timezone_2017c_posix.zipは解凍後に.sqlファイルを提供するだけで、問題を解決しない可能性があります。MySQL 5.7を実行している場合でも、5.6のzipファイルをダウンロードして、それらのファイルをC:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7)MySQLサーバーを再起動します。CONVERT_TZ()が機能しているかどうかを確認するには、このSQLクエリを実行します。
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
null以外の出力を確認します。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
エラーが発生した場合は、httpsdata too long for column 'abbreviation' at row 1
://bugs.mysql.com/bug.php?id = 68861を参照してください。
修正は次を実行することです
これは、mysqlモードを無効にし、mysqlが切り捨てられたデータを挿入できるようにする行を追加します。これは、mysqlが末尾にnull文字を追加するmysqlのバグが原因でした(上記のリンクによる)。
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
(if the above gives error "data too long for column 'abbreviation' at row 1")
mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/zut.sql
echo "SET SESSION SQL_MODE = '';" > /tmp/mysql_tzinfo_to.sql
cat /tmp/zut.sql >> /tmp/mysql_tzinfo_to.sql
mysql --defaults-file=/etc/mysql/my.cnf --user=verifiedscratch -p mysql < /tmp/mysql_tzinfo_to.sql
これらは、WindowsでMySQL 5.7を使用している場合に機能させるための手順です。
mysql -u root -p password
。use mysql
MySQL DBを選択するために入力します。正常に完了するCONVERT_TZ
と、その他のタイムゾーン機能を使用できるようになります。