MariaDBでタイムゾーンを正しく扱うためのヒント

2024-04-12

MariaDBでタイムゾーンテーブルを設定する方法

MariaDB 10.2以降では、タイムゾーン情報が5つのテーブルに分割されています。

  • mysql.time_zone
  • mysql.time_zone_leap_second

これらのテーブルを設定することで、MariaDBでタイムゾーン機能を利用できます。

手順

  1. タイムゾーン情報を取得する

    mysql_tzinfo_to_sql > timezones.sql
    
  2. タイムゾーンテーブルを作成する

    取得したタイムゾーン情報を使用して、タイムゾーンテーブルを作成します。

    mysql -u root -p < timezones.sql
    
  3. system_time_zone変数を使用して、デフォルトのタイムゾーンを設定できます。

    SET GLOBAL system_time_zone = 'Asia/Tokyo';
    
  4. mysql> SHOW VARIABLES LIKE 'system_time_zone';
    +--------------------------+-------------------------+
    | Variable_name           | Value                   |
    +--------------------------+-------------------------+
    | system_time_zone        | Asia/Tokyo              |
    +--------------------------+-------------------------+
    

補足

  • タイムゾーンテーブルは、MariaDBを起動するたびに読み込まれます。そのため、タイムゾーン情報を変更した場合は、MariaDBを再起動する必要があります。
  • mysql_tzinfo_to_sqlツールは、MariaDBの公式リポジトリからダウンロードできます。

この情報は参考用であり、予告なく変更されることがあります。




-- タイムゾーン情報を取得する
mysql_tzinfo_to_sql > timezones.sql

-- タイムゾーンテーブルを作成する
mysql -u root -p < timezones.sql

-- タイムゾーンを設定する
SET GLOBAL system_time_zone = 'Asia/Tokyo';

-- タイムゾーンを確認する
SHOW VARIABLES LIKE 'system_time_zone';
  1. mysql_tzinfo_to_sqlツールを使用して、タイムゾーン情報を取得します。

出力例

-- タイムゾーン情報を取得する
mysql_tzinfo_to_sql > timezones.sql

-- タイムゾーンテーブルを作成する
mysql -u root -p < timezones.sql

-- タイムゾーンを設定する
SET GLOBAL system_time_zone = 'Asia/Tokyo';

-- タイムゾーンを確認する
SHOW VARIABLES LIKE 'system_time_zone';

+--------------------------+-------------------------+
| Variable_name           | Value                   |
+--------------------------+-------------------------+
| system_time_zone        | Asia/Tokyo              |
+--------------------------+-------------------------+
  • このサンプルコードは、MariaDB 10.2以降で動作します。
  • タイムゾーン情報は、定期的に更新されます。最新の情報を入手するには、MariaDBの公式リポジトリからmysql_tzinfo_to_sqlツールをダウンロードしてください。



MariaDBでタイムゾーンテーブルを設定するその他の方法

MariaDBの公式ドキュメント (https://mariadb.com/kb/en/time-zones/) に記載されている手順に従って、手動でタイムゾーンテーブルを設定することができます。

GUIツールを使用する

MySQL WorkbenchなどのGUIツールを使用して、タイムゾーンテーブルを設定することができます。

スクリプトを使用する

タイムゾーンテーブルを設定するスクリプトを作成することができます。

各方法の詳細

手動で設定するには、以下の手順に従います。

  1. タイムゾーン情報のファイルを解凍します。
  2. 解凍したファイル内のtimezones.sqlファイルを実行します。

MySQL WorkbenchなどのGUIツールを使用するには、以下の手順に従います。

  1. MariaDBサーバーに接続します。
  1. スクリプトを実行します。

mariadb


PDOとMariaDBで始めるWebアプリケーション開発: 案件獲得に役立つスキル

PDO と MariaDB を組み合わせることで、以下のようなメリットが得られます。データベースへの統一的なアクセス: PDO は、MySQL だけでなく、MariaDB を含む様々なデータベースへの接続と操作を統一的に行うことができます。...


MariaDBのALTER TABLEコマンドを使いこなす!既存の列をNOT NULLに変更する方法

MariaDBで既存の列をNOT NULLに変更するには、ALTER TABLEステートメントを使用します。このステートメントは、テーブル構造の変更に使用されます。手順以下のコマンドを実行して、MariaDBに接続します。以下のコマンドを実行して、列をNOT NULLに変更します。...


MySQL/MariaDB で「SELECT order with row counter」が思い通りに動かない? 原因と解決策

変数の評価順序ORDER BY 句と組み合わせて使用するユーザー定義変数は、クエリの最後の行で評価される場合があります。つまり、すべての行が処理された後にのみ、変数の値が確定します。データ型行番号を表すために使用する列のデータ型が適切でない場合があります。例えば、列が数値型ではなく文字列型の場合、数値として正しくソートされません。...


MariaDB の InnoDB リードバッファ効率が 0% の原因と解決策

MariaDB で InnoDB リードバッファ効率が 0% になっている場合、データベースのパフォーマンスが著しく低下する可能性があります。これは、InnoDB リードバッファがほとんど使用されていないことを意味し、データベースがディスク I/O に依存してデータをを読み取っているためです。...