feat(scripts): add diagnostic, seed, and test scripts
- Add add-ai-provider-visibility and add-missing-columns migration scripts - Add clear-error-book, seed-error-book, diagnose-error-book scripts - Add diagnose-tables and create-missing-tables scripts - Add test-failing-modules and test-teacher-pages test scripts
This commit is contained in:
65
scripts/diagnose-tables.js
Normal file
65
scripts/diagnose-tables.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* 诊断 4 个失败模块的数据库表结构和查询问题
|
||||
*/
|
||||
require("dotenv/config");
|
||||
const mysql = require("mysql2/promise");
|
||||
|
||||
async function main() {
|
||||
const conn = await mysql.createConnection({ uri: process.env.DATABASE_URL });
|
||||
|
||||
const tables = [
|
||||
"learning_diagnostic_reports",
|
||||
"announcements",
|
||||
"messages",
|
||||
"message_notifications",
|
||||
"error_book_items",
|
||||
"error_book_reviews",
|
||||
];
|
||||
|
||||
for (const table of tables) {
|
||||
console.log(`\n${"=".repeat(60)}`);
|
||||
console.log(`表: ${table}`);
|
||||
console.log("=".repeat(60));
|
||||
|
||||
// 检查表是否存在
|
||||
const [exists] = await conn.execute(
|
||||
`SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?`,
|
||||
[table],
|
||||
);
|
||||
|
||||
if (exists.length === 0) {
|
||||
console.log(" ❌ 表不存在!");
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(" ✅ 表存在");
|
||||
|
||||
// 获取列信息
|
||||
const [cols] = await conn.execute(
|
||||
`SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_TYPE
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?
|
||||
ORDER BY ORDINAL_POSITION`,
|
||||
[table],
|
||||
);
|
||||
console.log(" 列:");
|
||||
for (const c of cols) {
|
||||
console.log(` - ${c.COLUMN_NAME}: ${c.COLUMN_TYPE} (NULL=${c.IS_NULLABLE}, DEFAULT=${c.COLUMN_DEFAULT})`);
|
||||
}
|
||||
|
||||
// 获取行数
|
||||
try {
|
||||
const [count] = await conn.execute(`SELECT COUNT(*) as cnt FROM \`${table}\``);
|
||||
console.log(` 行数: ${count[0].cnt}`);
|
||||
} catch (err) {
|
||||
console.log(` 行数查询失败: ${err.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
await conn.end();
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error("致命错误:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user