run-master-sql.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const fs = require('fs')
  2. const path = require('path')
  3. const SQL_FILE = process.argv[3]
  4. ? path.resolve(process.argv[3])
  5. : path.join(__dirname, '../sql/master/V20260628_02__remove_dashboard_restore_qdrant_menu.sql')
  6. const DB = {
  7. host: process.env.DB_HOST || 'cq-cdb-8fjmemkb.sql.tencentcdb.com',
  8. port: Number(process.env.DB_PORT || 27220),
  9. user: process.env.DB_USER || 'root',
  10. password: process.env.DB_PASSWORD || 'Ylrz_1q2w3e4r5t6y',
  11. database: process.env.DB_NAME || 'ylrz_saas',
  12. multipleStatements: false
  13. }
  14. function loadStatements(filePath) {
  15. const raw = fs.readFileSync(filePath, 'utf8')
  16. return raw
  17. .split(';')
  18. .map(s => s.trim())
  19. .filter(s => s && !s.split('\n').every(line => !line.trim() || line.trim().startsWith('--')))
  20. }
  21. async function main() {
  22. const mysql = require('mysql2/promise')
  23. const conn = await mysql.createConnection(DB)
  24. const statements = loadStatements(SQL_FILE)
  25. console.log('Target DB:', `${DB.host}:${DB.port}/${DB.database}`)
  26. console.log('SQL file:', SQL_FILE)
  27. console.log('Statements:', statements.length)
  28. try {
  29. for (const stmt of statements) {
  30. const [result] = await conn.query(stmt)
  31. console.log(`${stmt.replace(/\s+/g, ' ').slice(0, 80)}... -> affectedRows=${result.affectedRows}`)
  32. }
  33. for (const table of ['sys_menu', 'tenant_sys_menu', 'tenant_company_menu']) {
  34. const [rows] = await conn.query(`SELECT COUNT(*) AS c FROM ${table} WHERE menu_id = 29924`)
  35. console.log(`verify ${table}.menu_id=29924 => ${rows[0].c}`)
  36. }
  37. console.log('Done.')
  38. } finally {
  39. await conn.end()
  40. }
  41. }
  42. main().catch(err => {
  43. console.error('FAILED:', err.message || err)
  44. process.exit(1)
  45. })