| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const mysql = require('mysql2/promise')
- const fs = require('fs')
- const path = require('path')
- const DB_CFG = {
- host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com',
- port: 27220,
- user: 'root',
- password: 'Ylrz_1q2w3e4r5t6y',
- multipleStatements: true
- }
- const MIGRATION_SQL = fs.readFileSync(
- path.join(__dirname, '../../java/fs-agent/src/main/resources/db/migration/tenant/V20260623_01__lobster_execution_config_drop_task_policy.sql'),
- 'utf8'
- )
- function dbNameFromUrl(url) {
- if (!url) return null
- const m = String(url).match(/\/([^/?]+)(?:\?|$)/)
- return m ? m[1] : null
- }
- async function applyMigration(database) {
- const conn = await mysql.createConnection({ ...DB_CFG, database })
- await conn.query(MIGRATION_SQL)
- const [cols] = await conn.query(
- "SHOW COLUMNS FROM lobster_execution_config LIKE 'enable_%'"
- )
- await conn.end()
- return { database, legacyCols: cols.length }
- }
- async function main() {
- const masterConn = await mysql.createConnection({ ...DB_CFG, database: 'ylrz_saas' })
- const dbs = new Set()
- try {
- const [tenants] = await masterConn.query(
- 'SELECT id, tenant_code, db_url FROM tenant_info WHERE db_url IS NOT NULL AND db_url != \'\''
- )
- for (const t of tenants) {
- const name = dbNameFromUrl(t.db_url)
- if (name) dbs.add(name)
- }
- } catch (e) {
- console.warn('tenant_info query skipped:', e.message)
- }
- await masterConn.end()
- for (const db of dbs) {
- try {
- const r = await applyMigration(db)
- console.log(`${db}: legacy_task_policy_cols=${r.legacyCols} (0=OK)`)
- } catch (e) {
- console.error(`${db}: ERROR ${e.message}`)
- }
- }
- }
- main().catch(e => {
- console.error(e)
- process.exit(1)
- })
|