Closed5

Cloudflare D1 のマイグレーションを試す

kwnkwn

​​migrations create

データベースは前に作った「d1-tutorials-comments-api-db」を使用。
「test1」という名前でマイグレーションファイルを作成。

npx wrangler d1 migrations create d1-tutorials-comments-api-db test1


マイグレーションフォルダがないけど作っていい?と聞かれました。
「y」と入力。

? No migrations folder found. Set `migrations_dir` in wrangler.toml to choose a different path.
Ok to create /Users/xxx/Desktop/d1-tutorials-comments-api/migrations? › (Y/n)
✅ Successfully created Migration '0000_test1.sql'!


作成されたファイルの中身はコメントのみ。

kwnkwn

migrations list

未適用のマイグレーションファイル一覧を表示。

npx wrangler d1 migrations list d1-tutorials-comments-api-db
Migrations to be applied:
┌────────────────┐
│ Name           │
├────────────────┤
│ 0000_test1.sql │
└────────────────┘


未適用のマイグレーションファイルがない場合は以下のように表示された。

✅ No migrations to apply!
kwnkwn

migrations apply

マイグレーションファイルを編集。

0000_test1.sql
-- Migration number: 0000 	 2023-08-21T04:41:10.972Z
ALTER TABLE comments ADD COLUMN test1_column text;


未適用のマイグレーションファイルを適用。

npx wrangler d1 migrations apply d1-tutorials-comments-api-db


移行中はデータベースがリクエストに対応できない可能性があるけど続ける?と聞かれました。
「y」と入力。

Migrations to be applied:
┌────────────────┐
│ name           │
├────────────────┤
│ 0000_test1.sql │
└────────────────┘
? About to apply 1 migration(s)
Your database may not be available to serve requests during the migration, continue? › (Y/n)
🚣 Executed 2 commands in 0.9325539999408647ms
┌────────────────┬────────┐
│ name           │ status │
├────────────────┼────────┤
│ 0000_test1.sql │ ✅       │
└────────────────┴────────┘


ダッシュボードでテーブルを確認すると「test1_column」が増えている。


マイグレーションの履歴は「d1_migrations」テーブルに保存されている。

npx wrangler d1 execute d1-tutorials-comments-api-db --command "SELECT * FROM d1_migrations;"
🚣 Executed 1 commands in 0.3348630000837147ms
┌────┬────────────────┬─────────────────────┐
│ id │ name           │ applied_at          │
├────┼────────────────┼─────────────────────┤
│ 1  │ 0000_test1.sql │ 2023-08-21 05:15:20 │
└────┴────────────────┴─────────────────────┘
kwnkwn

Plans for the future

今後の追加予定をドキュメントから引用。

These are some of the features we plan to add in the future:

  • Down migration: The same way that apply builds up the database, there will be a way to go down migrations or rollback changes.
  • Fake migrations: Mark a migration as already applied without changing the database.
  • Apply only a specific migration: Apply only a specific migration without going through the sequential order.


ChatGPTによる翻訳。

これから追加予定のいくつかの機能です:

  • ダウンマイグレーション:applyがデータベースを構築するのと同じ方法で、マイグレーションを逆に行う方法が提供され、変更を元に戻すことができます。
  • フェイクマイグレーション:データベースを変更せずに、マイグレーションを適用済みとマークすることができます。
  • 特定のマイグレーションのみの適用:連続した順序を経ずに、特定のマイグレーションのみを適用することができます。
このスクラップは2023/08/21にクローズされました