const { PrismaClient } = require('@prisma/client'); const fs = require('fs'); const path = require('path'); const prisma = new PrismaClient(); async function main() { const sqlPath = path.join(__dirname, 'prisma/migrations/20260128_add_system_knowledge_base/migration.sql'); const sql = fs.readFileSync(sqlPath, 'utf-8'); // 按语句分割执行 const statements = sql.split(';').filter(s => s.trim()); console.log(`Executing ${statements.length} SQL statements...`); for (let i = 0; i < statements.length; i++) { const stmt = statements[i].trim(); if (!stmt) continue; try { await prisma.$executeRawUnsafe(stmt); console.log(`[${i + 1}/${statements.length}] OK`); } catch (error) { if (error.message.includes('already exists')) { console.log(`[${i + 1}/${statements.length}] SKIPPED (already exists)`); } else { console.error(`[${i + 1}/${statements.length}] ERROR:`, error.message); } } } console.log('\nDone!'); await prisma.$disconnect(); } main();