check-tenant-company-relation.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // 查看 company 表结构和 tenant_info 表,了解租户和公司的关系
  2. const mysql = require('mysql2/promise')
  3. const DB = {
  4. host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com',
  5. port: 27220,
  6. user: 'root',
  7. password: 'Ylrz_1q2w3e4r5t6y',
  8. multipleStatements: false
  9. }
  10. async function main() {
  11. const conn = await mysql.createConnection(DB)
  12. try {
  13. // 1. 查看 tenant_info 表结构
  14. const [tenantCols] = await conn.query("SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='ylrz_saas' AND TABLE_NAME='tenant_info' ORDER BY ORDINAL_POSITION")
  15. console.log('=== tenant_info 表结构 ===')
  16. tenantCols.forEach(c => console.log(` ${c.COLUMN_NAME} (${c.DATA_TYPE})`))
  17. // 2. 查看 company 表结构(主库)
  18. const [companyCols] = await conn.query("SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='ylrz_saas' AND TABLE_NAME='company' ORDER BY ORDINAL_POSITION")
  19. console.log('\n=== company 表结构 (主库 ylrz_saas) ===')
  20. companyCols.forEach(c => console.log(` ${c.COLUMN_NAME} (${c.DATA_TYPE})`))
  21. // 3. 查看租户列表
  22. const [tenants] = await conn.query("SELECT id, tenant_code, tenant_name, db_name, status FROM ylrz_saas.tenant_info LIMIT 10")
  23. console.log('\n=== 租户列表 ===')
  24. tenants.forEach(t => console.log(` id=${t.id}, code=${t.tenant_code}, name=${t.tenant_name}, db=${t.db_name}`))
  25. // 4. 查看租户库里的 company 表
  26. const [tenantDbs] = await conn.query("SHOW DATABASES LIKE 'fs_tenant_%'")
  27. const firstTenantDb = tenantDbs[0] ? Object.values(tenantDbs[0])[0] : null
  28. if (firstTenantDb) {
  29. const [tenantCompanyCols] = await conn.query(`SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME='company' ORDER BY ORDINAL_POSITION`, [firstTenantDb])
  30. console.log(`\n=== company 表结构 (租户库 ${firstTenantDb}) ===`)
  31. tenantCompanyCols.forEach(c => console.log(` ${c.COLUMN_NAME} (${c.DATA_TYPE})`))
  32. // 查看租户库里的 company 数据
  33. const [companies] = await conn.query(`SELECT company_id, company_name FROM \`${firstTenantDb}\`.company WHERE is_del = 0 LIMIT 10`)
  34. console.log(`\n=== ${firstTenantDb} 的 company 列表 ===`)
  35. companies.forEach(c => console.log(` company_id=${c.company_id}, name=${c.company_name}`))
  36. // 查看 lobster_user_profile 的 company_id 分布
  37. const [profileDist] = await conn.query(`SELECT company_id, COUNT(*) as cnt FROM \`${firstTenantDb}\`.lobster_user_profile WHERE deleted=0 GROUP BY company_id`)
  38. console.log(`\n=== ${firstTenantDb} 的 lobster_user_profile company_id 分布 ===`)
  39. profileDist.forEach(p => console.log(` company_id=${p.company_id}, count=${p.cnt}`))
  40. }
  41. } finally {
  42. await conn.end()
  43. }
  44. }
  45. main().catch(err => {
  46. console.error('FAILED:', err.message || err)
  47. process.exit(1)
  48. })