Quy trình migration D1
Hướng dẫn thực chiến để tạo, kiểm tra, áp dụng migration Cloudflare D1 với Drizzle và cứu các migration bị kẹt.
Lập trìnhTrung cấp★ 981⑂ 101Điểm AI 8/10Cập nhật lần cuối: 2 thg 7, 2026
Làm được gì
- Buộc đọc kỹ file SQL do
pnpm db:generatesinh ra trước khi áp dụng, nhận diện mẫu nguy hiểm "tạo lại bảng" (CREATE new → INSERT SELECT → DROP → RENAME) mà Drizzle tạo ra khi bạn chỉ đổi giá trịdefault, và sửa thànhALTER TABLE ADD COLUMNđơn giản. - Quy trình áp dụng cho cả local và remote (
--local/--remote) rồi kiểm chứng bằngPRAGMA table_info. - Chẩn đoán và sửa migration bị kẹt do áp dụng một phần: truy vấn bảng
d1_migrations, ghi tay bản ghi migration rồi chạy tiếp. - Mẫu code chia lô (batch) để tránh lỗi âm thầm khi INSERT nhiều dòng do giới hạn tham số của D1 (~100–150).
- Quy ước đặt tên cột (camelCase trong Drizzle vs snake_case trong SQL thuần) và thứ tự thiết lập dự án mới: deploy Worker → tạo D1 → gắn binding → deploy lại → migrate.
Phù hợp với ai
- Dev backend/fullstack dùng Cloudflare Workers + D1 + Drizzle ORM.
- Nhóm hay gặp cảnh "chạy tốt ở local, vỡ ở production" vì migration lệch.
- Người phải tra cứu lệnh wrangler mỗi lần dùng.
Ví dụ sử dụng
- Sau khi thêm cột vào schema, yêu cầu "tạo và áp dụng migration" → Claude đọc SQL trước, phát hiện mẫu tạo lại bảng và sửa thành ALTER an toàn, rồi apply cả local lẫn remote.
db:migratebáo lỗi "duplicate column" → kiểm traPRAGMA table_infovàd1_migrations, ghi tay migration bị kẹt để các migration sau chạy bình thường.- Insert 500 dòng seed data thất bại không báo lỗi → refactor thành vòng lặp batch 10 dòng.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/jezweb/claude-skills/HEAD/plugins/cloudflare/skills/d1-migration/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục plugins/cloudflare/skills/d1-migration từ repo GitHub jezweb/claude-skills vào ~/.claude/skills/d1-migration/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/jezweb/claude-skills.git && mkdir -p ~/.claude/skills && cp -r claude-skills/plugins/cloudflare/skills/d1-migration ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Cài Claude Code và mở terminal.
- Tải repo:
git clone https://github.com/jezweb/claude-skills.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy skill:
cp -r claude-skills/plugins/cloudflare/skills/d1-migration ~/.claude/skills/ - Kiểm tra tồn tại file
~/.claude/skills/d1-migration/SKILL.md. - Đảm bảo dự án đã có wrangler, Drizzle và các script
db:generate,db:migrate:local,db:migrate:remotetrong package.json. - Khởi động lại Claude Code trong thư mục dự án và nói "tạo migration D1 rồi áp dụng" để kích hoạt.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT