DB-Migrationen mit Claude Code automatisieren
Erfahren Sie, wie Sie DB-Migrationen mit Claude Code automatisieren. Mit praktischen Codebeispielen und Schritt-für-Schritt-Anleitung.
DB-Migrationsprobleme mit Claude Code lösen
Das manuelle Schreiben von Migrationsdateien bei jedem Schemachange ist aufwendig und fehleranfällig. Mit Claude Code können Sie von der Schema-Designänderung über die Migrationsgenerierung bis zur Seed-Daten-Aktualisierung alles in einem Zug erledigen.
Migration mit Prisma
Vom Schema-Design bis zur Migrationsausführung
> Füge dem Prisma-Schema die folgenden Tabellen hinzu und generiere und wende die Migration an.
>
> Tabelle: Order
> - id: UUID, Primärschlüssel
> - userId: Fremdschlüssel zu User
> - items: OrderItem[] (1:n)
> - totalAmount: Decimal
> - status: enum (pending, confirmed, shipped, delivered, cancelled)
> - createdAt, updatedAt
Beispiel eines von Claude Code generierten Schemas.
enum OrderStatus {
pending
confirmed
shipped
delivered
cancelled
}
model Order {
id String @id @default(uuid())
userId String
user User @relation(fields: [userId], references: [id])
items OrderItem[]
totalAmount Decimal @db.Decimal(10, 2)
status OrderStatus @default(pending)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
@@index([status])
}
model OrderItem {
id String @id @default(uuid())
orderId String
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
productId String
quantity Int
price Decimal @db.Decimal(10, 2)
}
Anschließend führt Claude Code automatisch den Migrationsbefehl aus.
npx prisma migrate dev --name add_order_tables
Migration mit Drizzle
Auch bei Verwendung von Drizzle ORM können Sie ähnliche Anweisungen geben.
> Füge dem Drizzle ORM-Schema eine Order-Tabelle hinzu.
> Generiere auch die Migrationsdatei.
import { pgTable, uuid, decimal, timestamp, pgEnum } from "drizzle-orm/pg-core";
import { relations } from "drizzle-orm";
import { users } from "./users";
export const orderStatusEnum = pgEnum("order_status", [
"pending", "confirmed", "shipped", "delivered", "cancelled",
]);
export const orders = pgTable("orders", {
id: uuid("id").defaultRandom().primaryKey(),
userId: uuid("user_id").notNull().references(() => users.id),
totalAmount: decimal("total_amount", { precision: 10, scale: 2 }).notNull(),
status: orderStatusEnum("status").default("pending").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const ordersRelations = relations(orders, ({ one, many }) => ({
user: one(users, { fields: [orders.userId], references: [users.id] }),
items: many(orderItems),
}));
Bestehende Schemas ändern
Auch Änderungen an bestehenden Tabellen wie Spaltenhinzufügungen oder Umbenennungen werden sicher verarbeitet.
> Nimm folgende Änderungen an der users-Tabelle vor.
> - phoneNumber-Spalte hinzufügen (nullable)
> - name in firstName und lastName aufteilen
> - Einschließlich Migrationslogik für bestehende Daten
Claude Code generiert eine Migration mit Datenmigrationsskript.
-- Migration: split_user_name
ALTER TABLE "users" ADD COLUMN "first_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "last_name" VARCHAR(100);
ALTER TABLE "users" ADD COLUMN "phone_number" VARCHAR(20);
-- Migration bestehender Daten
UPDATE "users"
SET
"first_name" = split_part("name", ' ', 1),
"last_name" = CASE
WHEN array_length(string_to_array("name", ' '), 1) > 1
THEN split_part("name", ' ', 2)
ELSE ''
END;
ALTER TABLE "users" ALTER COLUMN "first_name" SET NOT NULL;
ALTER TABLE "users" ALTER COLUMN "last_name" SET NOT NULL;
ALTER TABLE "users" DROP COLUMN "name";
Seed-Daten generieren
Entwicklungs-Testdaten können gleich miterstellt werden.
> Erstelle 20 Seed-Datensätze für die Order-Tabelle.
> Die Status sollen gleichmäßig verteilt sein.
> Mit realistischen Dummy-Daten.
Migrationssicherheit prüfen
> Überprüfe den aktuellen Migrationsverlauf und
> prüfe vor der Produktionsanwendung auf Probleme.
> Weise insbesondere auf Änderungen mit Datenverlustrisiko hin.
Zu DB-Integrationsmustern in der API-Entwicklung siehe API-Entwicklung beschleunigen. Das Festhalten von Datenbankregeln in CLAUDE.md verbessert die Sicherheit. Tipps dazu finden Sie im vollständigen Leitfaden zum Schreiben von CLAUDE.md.
Zusammenfassung
Mit Claude Code können Sie vom DB-Schema-Design über Änderungen, Migrationsgenerierung bis zur Seed-Daten-Erstellung alles konsistent automatisieren. Besonders bei komplexen Migrationen mit Datenmigrationslogik zeigt es seine Stärke.
Details zur Verwendung von Prisma finden Sie in der offiziellen Prisma-Dokumentation, zu Claude Code in der offiziellen Anthropic-Dokumentation.
Kostenloses PDF: Claude-Code-Spickzettel in 5 Minuten
Trag einfach deine E-Mail-Adresse ein – wir senden dir den A4-Spickzettel als PDF sofort zu.
Wir behandeln deine Daten sorgfältig und senden niemals Spam.
Über den Autor
Masa
Ingenieur, der Claude Code intensiv nutzt. Betreibt claudecode-lab.com, ein Tech-Medium in 10 Sprachen mit über 2.000 Seiten.
Ähnliche Artikel
7 Prüfungen, bevor du täglich einen mehrsprachigen Claude-Code-Artikel veröffentlichst
Eine praktische Checkliste, damit tägliche mehrsprachige Claude-Code-Artikel nicht an fehlenden Sprachen, kaputten CTAs oder veralteten Live-Seiten scheitern.
Was sind Codex Automations? Content Ops mit KI planen und ausfuehren
Praktischer Leitfaden fuer Codex Automations: Analytics, Themenwahl, Artikel, CTA, Deployment und Monetarisierung.
Claude Code × GCP Cloud Functions Komplettanleitung | Serverlose Funktionen blitzschnell entwickeln
GCP Cloud Functions mit Claude Code optimieren. HTTP/Pub/Sub/Firestore-Trigger implementieren, lokal testen und Deployments automatisieren — mit echten Codebeispielen aus Masas Praxiserfahrung.