d1-migration
Drizzle を使ったマイグレーションファイルの生成から、SQL の問題点の確認、ローカル・リモートへの適用、スタックしたマイグレーションの修正、部分的な失敗への対処まで、Cloudflare D1 のマイグレーション作業全般を担うスキル。マイグレーションの実行・エラー修正・D1 スキーマのセットアップ時に使用してください。
description の原文を見る
Cloudflare D1 migration workflow: generate with Drizzle, inspect SQL for gotchas, apply to local and remote, fix stuck migrations, handle partial failures. Use when running migrations, fixing migration errors, or setting up D1 schemas.
SKILL.md 本文
D1 マイグレーションワークフロー
Drizzle ORM を使用した Cloudflare D1 データベースマイグレーションのガイドワークフロー。
標準マイグレーションフロー
1. マイグレーションを生成
pnpm db:generate
drizzle/ (または設定したマイグレーションディレクトリ) に新しい .sql ファイルを作成します。
2. 生成された SQL を確認 (重要)
生成された SQL を適用する前に必ず確認してください。 Drizzle は単純なスキーマ変更に対して、破壊的なマイグレーションを生成することがあります。
注意フラグ: テーブル再作成
このパターンが見られた場合、マイグレーションは失敗する可能性が高いです:
CREATE TABLE `my_table_new` (...);
INSERT INTO `my_table_new` SELECT ..., `new_column`, ... FROM `my_table`;
-- ^^^ This column doesn't exist in old table!
DROP TABLE `my_table`;
ALTER TABLE `my_table_new` RENAME TO `my_table`;
原因: Drizzle スキーマでカラムの default 値を変更すると、テーブル全体の再作成がトリガーされます。INSERT SELECT は旧テーブルに存在しない新しいカラムを参照しています。
修正: 新しいカラムを追加するだけの場合 (既存カラムの型と制約に変更がない場合) は、以下に簡略化します:
ALTER TABLE `my_table` ADD COLUMN `new_column` TEXT DEFAULT 'value';
.sql ファイルを直接編集してから適用してください。
3. ローカルに適用
pnpm db:migrate:local
# または: npx wrangler d1 migrations apply DB_NAME --local
4. リモートに適用
pnpm db:migrate:remote
# または: npx wrangler d1 migrations apply DB_NAME --remote
テストする前に、必ずローカルとリモート両方に適用してください。 ローカルのみのマイグレーションは、「ローカルでは動くが本番環境で壊れる」という混乱を招きます。
5. 確認
# ローカルを確認
npx wrangler d1 execute DB_NAME --local --command "PRAGMA table_info(my_table)"
# リモートを確認
npx wrangler d1 execute DB_NAME --remote --command "PRAGMA table_info(my_table)"
停止したマイグレーションの修正
マイグレーションが部分的に適用された場合 (例: カラムは追加されたがマイグレーションが記録されなかった)、wrangler は再試行してダブりカラムエラーで失敗します。
症状: pnpm db:migrate が完了しているはずのマイグレーションでエラーが出ます。PRAGMA table_info ではカラムが存在しています。
診断
# 1. カラム/テーブルが存在することを確認
npx wrangler d1 execute DB_NAME --remote \
--command "PRAGMA table_info(my_table)"
# 2. 記録されたマイグレーションを確認
npx wrangler d1 execute DB_NAME --remote \
--command "SELECT * FROM d1_migrations ORDER BY id"
修正
# 3. 停止したマイグレーションを手動で記録
npx wrangler d1 execute DB_NAME --remote \
--command "INSERT INTO d1_migrations (name, applied_at) VALUES ('0013_my_migration.sql', datetime('now'))"
# 4. 残りのマイグレーションを通常通り実行
pnpm db:migrate
予防策
CREATE TABLE IF NOT EXISTS— 再実行しても安全ALTER TABLE ADD COLUMN— SQLite にはIF NOT EXISTSバリアントがありません。カラムの存在を事前に確認するか、アプリケーションコードで try/catch を使用してください- 生成された SQL を必ず確認 してから適用 (上記のステップ 2)
一括挿入のバッチ処理
D1 のパラメータ制限により、大量の複数行 INSERT で無音で失敗します。チャンクに分割します:
const BATCH_SIZE = 10;
for (let i = 0; i < allRows.length; i += BATCH_SIZE) {
const batch = allRows.slice(i, i + BATCH_SIZE);
await db.insert(myTable).values(batch);
}
理由: D1 は行数 × カラム数が約 100~150 パラメータを超えると失敗します。
カラム命名規則
| コンテキスト | 規則 | 例 |
|---|---|---|
| Drizzle スキーマ | camelCase | caseNumber: text('case_number') |
| raw SQL クエリ | snake_case | UPDATE cases SET case_number = ? |
| API レスポンス | SQL エイリアスに合わせる | SELECT case_number FROM cases |
新規プロジェクトセットアップ
新しいプロジェクト用に D1 データベースを作成する場合、この順序に従います:
- Worker をデプロイ —
npm run build && npx wrangler deploy - D1 データベースを作成 —
npx wrangler d1 create project-name-db - database_id を
wrangler.jsoncのd1_databasesバインディングにコピー - 再デプロイ —
npx wrangler deploy - マイグレーションを実行 — ローカルとリモート両方に適用
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jezweb
- リポジトリ
- jezweb/claude-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jezweb/claude-skills / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。