const fs = require('fs') const path = require('path') const SQL_FILE = process.argv[3] ? path.resolve(process.argv[3]) : path.join(__dirname, '../sql/master/V20260628_02__remove_dashboard_restore_qdrant_menu.sql') const DB = { host: process.env.DB_HOST || 'cq-cdb-8fjmemkb.sql.tencentcdb.com', port: Number(process.env.DB_PORT || 27220), user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD || 'Ylrz_1q2w3e4r5t6y', database: process.env.DB_NAME || 'ylrz_saas', multipleStatements: false } function loadStatements(filePath) { const raw = fs.readFileSync(filePath, 'utf8') return raw .split(';') .map(s => s.trim()) .filter(s => s && !s.split('\n').every(line => !line.trim() || line.trim().startsWith('--'))) } async function main() { const mysql = require('mysql2/promise') const conn = await mysql.createConnection(DB) const statements = loadStatements(SQL_FILE) console.log('Target DB:', `${DB.host}:${DB.port}/${DB.database}`) console.log('SQL file:', SQL_FILE) console.log('Statements:', statements.length) try { for (const stmt of statements) { const [result] = await conn.query(stmt) console.log(`${stmt.replace(/\s+/g, ' ').slice(0, 80)}... -> affectedRows=${result.affectedRows}`) } for (const table of ['sys_menu', 'tenant_sys_menu', 'tenant_company_menu']) { const [rows] = await conn.query(`SELECT COUNT(*) AS c FROM ${table} WHERE menu_id = 29924`) console.log(`verify ${table}.menu_id=29924 => ${rows[0].c}`) } console.log('Done.') } finally { await conn.end() } } main().catch(err => { console.error('FAILED:', err.message || err) process.exit(1) })