You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.8 KiB
76 lines
2.8 KiB
const mysql = require('mysql2/promise');
|
|
|
|
async function cleanupInvalidChatData() {
|
|
let connection;
|
|
|
|
try {
|
|
// 创建数据库连接
|
|
connection = await mysql.createConnection({
|
|
host: '1.95.162.61',
|
|
port: 3306,
|
|
user: 'root',
|
|
password: 'schl@2025',
|
|
database: 'wechat_app'
|
|
});
|
|
|
|
console.log('数据库连接成功');
|
|
|
|
// 统计并删除chat_conversations表中userId为'0'或无效的记录
|
|
const [convCount] = await connection.execute(
|
|
'SELECT COUNT(*) as count FROM chat_conversations WHERE userId = ? OR userId IS NULL OR userId = ?',
|
|
['0', '']
|
|
);
|
|
console.log(`chat_conversations表中待清理记录数: ${convCount[0].count}`);
|
|
|
|
if (convCount[0].count > 0) {
|
|
const [convResult] = await connection.execute(
|
|
'DELETE FROM chat_conversations WHERE userId = ? OR userId IS NULL OR userId = ?',
|
|
['0', '']
|
|
);
|
|
console.log(`成功删除chat_conversations表中的 ${convResult.affectedRows} 条记录`);
|
|
}
|
|
|
|
// 统计并删除chat_online_status表中userId为'0'或无效的记录
|
|
const [statusCount] = await connection.execute(
|
|
'SELECT COUNT(*) as count FROM chat_online_status WHERE userId = ? OR userId IS NULL OR userId = ?',
|
|
['0', '']
|
|
);
|
|
console.log(`chat_online_status表中待清理记录数: ${statusCount[0].count}`);
|
|
|
|
if (statusCount[0].count > 0) {
|
|
const [statusResult] = await connection.execute(
|
|
'DELETE FROM chat_online_status WHERE userId = ? OR userId IS NULL OR userId = ?',
|
|
['0', '']
|
|
);
|
|
console.log(`成功删除chat_online_status表中的 ${statusResult.affectedRows} 条记录`);
|
|
}
|
|
|
|
// 统计并删除chat_messages表中sender_id或receiver_id为'0'或无效的记录
|
|
const [msgCount] = await connection.execute(
|
|
'SELECT COUNT(*) as count FROM chat_messages WHERE sender_id = ? OR sender_id IS NULL OR sender_id = ? OR receiver_id = ? OR receiver_id IS NULL OR receiver_id = ?',
|
|
['0', '', '0', '']
|
|
);
|
|
console.log(`chat_messages表中待清理记录数: ${msgCount[0].count}`);
|
|
|
|
if (msgCount[0].count > 0) {
|
|
const [msgResult] = await connection.execute(
|
|
'DELETE FROM chat_messages WHERE sender_id = ? OR sender_id IS NULL OR sender_id = ? OR receiver_id = ? OR receiver_id IS NULL OR receiver_id = ?',
|
|
['0', '', '0', '']
|
|
);
|
|
console.log(`成功删除chat_messages表中的 ${msgResult.affectedRows} 条记录`);
|
|
}
|
|
|
|
console.log('\n清理完成!数据库中的无效聊天数据已被删除。');
|
|
|
|
} catch (error) {
|
|
console.error('清理过程中发生错误:', error);
|
|
} finally {
|
|
if (connection) {
|
|
await connection.end();
|
|
console.log('数据库连接已关闭');
|
|
}
|
|
}
|
|
}
|
|
|
|
// 执行清理操作
|
|
cleanupInvalidChatData();
|