- 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
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
/**
|
|
* 诊断 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);
|
|
});
|