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.
Related Posts
So beschleunigen Sie Ihre Nebenprojekte mit Claude Code [Mit Beispielen]
Erfahren Sie, wie Sie persönliche Entwicklungsprojekte mit Claude Code drastisch beschleunigen. Inklusive realer Beispiele und eines praktischen Workflows von der Idee bis zum Deployment.
So automatisieren Sie Refactoring mit Claude Code
Erfahren Sie, wie Sie Code-Refactoring mit Claude Code effizient automatisieren. Inklusive praktischer Prompts und konkreter Refactoring-Muster für reale Projekte.
Vollständiger CORS-Konfigurationsleitfaden mit Claude Code
Erfahren Sie alles über die CORS-Konfiguration mit Claude Code. Mit praktischen Tipps und Codebeispielen.