/** * Ensure lobster_user_segment table exists (tenant DB). * Usage: node scripts/repair-lobster-segment-schema.js [dbName] */ const mysql = require('mysql2/promise') const DB_CFG = { host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com', port: 27220, user: 'root', password: 'Ylrz_1q2w3e4r5t6y', charset: 'utf8mb4' } const TARGET_DB = process.argv[2] || 'fs_tenant_cs1' const CREATE_SQL = ` CREATE TABLE IF NOT EXISTS lobster_user_segment ( id bigint NOT NULL AUTO_INCREMENT, company_id bigint NOT NULL COMMENT 'company id', segment_code varchar(64) NOT NULL COMMENT 'segment code', segment_name varchar(128) DEFAULT NULL COMMENT 'segment name', description varchar(500) DEFAULT NULL COMMENT 'description', strategy_config text COMMENT 'strategy config JSON', deleted tinyint DEFAULT 0 COMMENT 'deleted flag', create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_company_segment (company_id, segment_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='lobster user segment definitions' ` async function main() { const conn = await mysql.createConnection({ ...DB_CFG, database: TARGET_DB }) console.log('DB:', TARGET_DB) const [before] = await conn.query(`SHOW TABLES LIKE 'lobster_user_segment'`) if (before.length) { console.log('lobster_user_segment already exists') } else { await conn.query(CREATE_SQL) console.log('created lobster_user_segment') } const [cols] = await conn.query( `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'lobster_user_segment' ORDER BY ORDINAL_POSITION` ) console.log('columns:', cols.map(r => r.COLUMN_NAME).join(', ')) await conn.end() } main().catch(e => { console.error(e); process.exit(1) })