Files

3.4 KiB
Raw Permalink Blame History

データベースマイグレーションガイド

概要

vehicle_img_right項目をoperation_log_tableに追加したことに伴うマイグレーション手順です。

追加カラム

  • vehicle_img_right: 後ろ向き車両画像URL(TEXT型、NULL許可)
  • vehicle_info_url: 車両情報URLTEXT型、NULL許可)
  • state: 状態フラグ(DOUBLE PRECISION型、NOT NULL、デフォルト0

unit_operation_list 追加カラム(2026-04-16

  • related_id: 関連運用IDTEXT型、NULL許可)
  • tomorrow_id: 翌日運用IDTEXT型、NULL許可)

既存データベースへの適用

docker exec -i jr-shikoku-backend-system-jr-shikoku-backend-db-1 psql -U postgres -d jr_shikoku_database < scripts/add_unit_operation_columns.sql

新規構築の場合

新規にデータベースを構築する場合は、通常通り以下を実行してください:

go run cmd/migrate.go

既存データベースの場合

方法1: SQLスクリプトを直接実行(推奨)

# コンテナ名を確認
docker ps

# マイグレーションを実行
docker exec -i jr-shikoku-backend-system-jr-shikoku-backend-db-1 psql -U postgres -d jr_shikoku_database < scripts/add_vehicle_img_right.sql

方法2: psqlで対話的に実行

# データベースに接続
docker exec -it jr-shikoku-backend-system-jr-shikoku-backend-db-1 psql -U postgres -d jr_shikoku_database

# 以下のコマンドを実行
ALTER TABLE operation_log_table ADD COLUMN IF NOT EXISTS vehicle_img_right TEXT;
ALTER TABLE operation_log_table ADD COLUMN IF NOT EXISTS vehicle_info_url TEXT;
ALTER TABLE operation_log_table ADD COLUMN IF NOT EXISTS state DOUBLE PRECISION NOT NULL DEFAULT 0;

# 確認
\d operation_log_table

# 終了
\q

マイグレーション確認

# テーブル構造を確認
docker exec -it jr-shikoku-backend-system-jr-shikoku-backend-db-1 psql -U postgres -d jr_shikoku_database -c "\d operation_log_table"

以下のカラムが表示されればOKです:

  • id
  • date
  • operation_id
  • train_ids
  • unit_ids
  • vehicle_img
  • vehicle_img_right ← 新規
  • vehicle_info_url ← 新規(欠落していた場合)
  • state ← 新規(欠落していた場合)

バックアップ

マイグレーション前に必ずバックアップを取得してください:

./scripts/backup.sh

ロールバック

問題が発生した場合は、以下のコマンドでカラムを削除できます:

ALTER TABLE operation_log_table DROP COLUMN IF EXISTS vehicle_img_right;
ALTER TABLE operation_log_table DROP COLUMN IF EXISTS vehicle_info_url;
ALTER TABLE operation_log_table DROP COLUMN IF EXISTS state;

その後、バックアップからリストアしてください:

./scripts/restore.sh <backup_file>

影響範囲

以下のファイルが更新されました:

注意事項

  • マイグレーション実行時はアプリケーションを停止してください
  • 本番環境では必ず事前にバックアップを取得してください
  • マイグレーション後、アプリケーションを再起動してください