153 lines
5.5 KiB
JavaScript
153 lines
5.5 KiB
JavaScript
|
|
// 检查表结构脚本
|
||
|
|
// 查看4个核心模块的表结构
|
||
|
|
|
||
|
|
const mysql = require('mysql2/promise');
|
||
|
|
|
||
|
|
// 数据库配置
|
||
|
|
const dbConfig = {
|
||
|
|
host: 'localhost',
|
||
|
|
port: 3306,
|
||
|
|
user: 'wwjcloud',
|
||
|
|
password: 'wwjcloud',
|
||
|
|
database: 'wwjcloud'
|
||
|
|
};
|
||
|
|
|
||
|
|
async function checkTableStructure() {
|
||
|
|
let connection;
|
||
|
|
|
||
|
|
try {
|
||
|
|
console.log('🔌 连接数据库...');
|
||
|
|
connection = await mysql.createConnection(dbConfig);
|
||
|
|
console.log('✅ 数据库连接成功!');
|
||
|
|
|
||
|
|
console.log('\n🔍 检查表结构...');
|
||
|
|
|
||
|
|
// 检查Admin模块表结构
|
||
|
|
await checkAdminTables(connection);
|
||
|
|
|
||
|
|
// 检查Member模块表结构
|
||
|
|
await checkMemberTables(connection);
|
||
|
|
|
||
|
|
// 检查RBAC模块表结构
|
||
|
|
await checkRbacTables(connection);
|
||
|
|
|
||
|
|
// 检查Auth模块表结构
|
||
|
|
await checkAuthTables(connection);
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error('❌ 检查失败:', error.message);
|
||
|
|
} finally {
|
||
|
|
if (connection) {
|
||
|
|
await connection.end();
|
||
|
|
console.log('🔌 数据库连接已关闭');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function checkAdminTables(connection) {
|
||
|
|
console.log('\n📊 Admin模块表结构:');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// 检查sys_user表
|
||
|
|
console.log(' 👥 sys_user表:');
|
||
|
|
const [userFields] = await connection.execute('DESCRIBE sys_user');
|
||
|
|
userFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 检查sys_user_role表
|
||
|
|
console.log(' 🔐 sys_user_role表:');
|
||
|
|
const [roleFields] = await connection.execute('DESCRIBE sys_user_role');
|
||
|
|
roleFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 检查sys_user_log表
|
||
|
|
console.log(' 📝 sys_user_log表:');
|
||
|
|
const [logFields] = await connection.execute('DESCRIBE sys_user_log');
|
||
|
|
logFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ❌ Admin模块检查失败: ${error.message}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function checkMemberTables(connection) {
|
||
|
|
console.log('\n👥 Member模块表结构:');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// 检查member表
|
||
|
|
console.log(' 👤 member表:');
|
||
|
|
const [memberFields] = await connection.execute('DESCRIBE member');
|
||
|
|
memberFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 检查member_level表
|
||
|
|
console.log(' ⭐ member_level表:');
|
||
|
|
const [levelFields] = await connection.execute('DESCRIBE member_level');
|
||
|
|
levelFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 检查member_address表
|
||
|
|
console.log(' 🏠 member_address表:');
|
||
|
|
const [addressFields] = await connection.execute('DESCRIBE member_address');
|
||
|
|
addressFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ❌ Member模块检查失败: ${error.message}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function checkRbacTables(connection) {
|
||
|
|
console.log('\n🔐 RBAC模块表结构:');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// 检查sys_role表
|
||
|
|
console.log(' 🎭 sys_role表:');
|
||
|
|
const [roleFields] = await connection.execute('DESCRIBE sys_role');
|
||
|
|
roleFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 检查sys_menu表
|
||
|
|
console.log(' 📋 sys_menu表:');
|
||
|
|
const [menuFields] = await connection.execute('DESCRIBE sys_menu');
|
||
|
|
menuFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ❌ RBAC模块检查失败: ${error.message}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function checkAuthTables(connection) {
|
||
|
|
console.log('\n🔑 Auth模块表结构:');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// 检查auth_token表
|
||
|
|
const [tables] = await connection.execute("SHOW TABLES LIKE 'auth_token'");
|
||
|
|
|
||
|
|
if (tables.length > 0) {
|
||
|
|
console.log(' 🎫 auth_token表:');
|
||
|
|
const [tokenFields] = await connection.execute('DESCRIBE auth_token');
|
||
|
|
tokenFields.forEach(field => {
|
||
|
|
console.log(` - ${field.Field}: ${field.Type} ${field.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${field.Default ? `DEFAULT ${field.Default}` : ''} ${field.Comment ? `COMMENT '${field.Comment}'` : ''}`);
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
console.log(' ⚠️ auth_token表不存在');
|
||
|
|
}
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error(` ❌ Auth模块检查失败: ${error.message}`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 运行检查
|
||
|
|
checkTableStructure();
|