Files
jiebanke/db_test.js

137 lines
4.0 KiB
JavaScript
Raw Normal View History

const mysql = require('mysql2');
// 数据库配置
const dbConfig = {
host: '129.211.213.226',
port: 9527,
user: 'root',
password: 'aiotAiot123!',
database: 'jiebandata'
};
// 创建连接
const connection = mysql.createConnection(dbConfig);
// 连接数据库
connection.connect((err) => {
if (err) {
console.error('数据库连接失败: ' + err.stack);
return;
}
console.log('数据库连接成功连接ID: ' + connection.threadId);
// 查询所有表
connection.query('SHOW TABLES', (error, results) => {
if (error) {
console.error('查询表失败: ' + error.stack);
connection.end();
return;
}
console.log('数据库中的所有表:');
const tables = results.map(row => {
const tableName = Object.values(row)[0];
console.log('- ' + tableName);
return tableName;
});
// 检查是否存在管理员表
const adminTableExists = tables.some(table =>
table.includes('admin') || table.includes('Admin') || table.includes('ADMIN')
);
if (adminTableExists) {
console.log('\n✅ 找到可能的管理员相关表');
// 显示管理员相关表结构
const adminTables = tables.filter(table =>
table.includes('admin') || table.includes('Admin') || table.includes('ADMIN')
);
showTableStructure(adminTables, 0);
} else {
console.log('\n❌ 未找到管理员相关表');
// 显示所有表的简要信息
showAllTablesInfo(tables, 0);
}
});
// 显示表结构的递归函数
function showTableStructure(tables, index) {
if (index >= tables.length) {
connection.end();
return;
}
const tableName = tables[index];
console.log(`\n${tableName} 表结构:`);
connection.query(`DESCRIBE ${tableName}`, (error, results) => {
if (error) {
console.error(`查询 ${tableName} 表结构失败: ` + error.stack);
} else {
console.table(results.map(row => ({
字段: row.Field,
类型: row.Type,
: row.Null,
: row.Key,
默认值: row.Default,
额外: row.Extra
})));
}
showTableStructure(tables, index + 1);
});
}
// 显示所有表信息的递归函数
function showAllTablesInfo(tables, index) {
if (index >= tables.length) {
// 创建管理员表的SQL
console.log('\n=== 建议创建的管理员表结构 ===');
const createAdminTableSQL = `
CREATE TABLE admins (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
nickname VARCHAR(100),
avatar VARCHAR(255),
role ENUM('super_admin', 'admin', 'operator') DEFAULT 'admin',
status TINYINT DEFAULT 1,
last_login TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);`;
console.log(createAdminTableSQL);
// 插入测试数据的SQL
console.log('\n=== 插入测试数据 ===');
const insertTestDataSQL = `
INSERT INTO admins (username, password, email, nickname, role) VALUES
('admin', '$2b$10$rVuz/q97ocR1Zb07DzW5F.9Qx6B6HnV7JFzQb5nR1W3v7Z2mH4n6O', 'admin@example.com', '超级管理员', 'super_admin'),
('operator', '$2b$10$rVuz/q97ocR1Zb07DzW5F.9Qx6B6HnV7JFzQb5nR1W3v7Z2mH4n6O', 'operator@example.com', '操作员', 'operator');
`;
console.log(insertTestDataSQL);
connection.end();
return;
}
const tableName = tables[index];
console.log(`\n${tableName} 表信息:`);
connection.query(`SELECT COUNT(*) as count FROM ${tableName}`, (error, results) => {
if (error) {
console.error(`查询 ${tableName} 表数据量失败: ` + error.stack);
} else {
console.log(`数据量: ${results[0].count}`);
}
showAllTablesInfo(tables, index + 1);
});
}
});