89 lines
2.3 KiB
JavaScript
89 lines
2.3 KiB
JavaScript
const { getDB, initDB } = require('./database');
|
|
|
|
/**
|
|
* 修复商品图片路径
|
|
* 将 /uploads/product/ 更新为 /uploads/products/
|
|
*/
|
|
async function fixImagePaths() {
|
|
try {
|
|
console.log('开始修复商品图片路径...');
|
|
|
|
// 初始化数据库连接
|
|
await initDB();
|
|
const db = getDB();
|
|
|
|
// 查询所有包含错误路径的商品
|
|
const [products] = await db.execute(
|
|
"SELECT id, image_url FROM products WHERE image_url LIKE '/uploads/product/%'"
|
|
);
|
|
|
|
console.log(`找到 ${products.length} 个需要修复的商品图片路径`);
|
|
|
|
if (products.length === 0) {
|
|
console.log('没有需要修复的图片路径');
|
|
return;
|
|
}
|
|
|
|
// 开始事务
|
|
await db.query('START TRANSACTION');
|
|
|
|
let updatedCount = 0;
|
|
|
|
for (const product of products) {
|
|
const oldPath = product.image_url;
|
|
const newPath = oldPath.replace('/uploads/product/', '/uploads/products/');
|
|
|
|
console.log(`修复商品 ID ${product.id}: ${oldPath} -> ${newPath}`);
|
|
|
|
await db.execute(
|
|
'UPDATE products SET image_url = ? WHERE id = ?',
|
|
[newPath, product.id]
|
|
);
|
|
|
|
updatedCount++;
|
|
}
|
|
|
|
// 提交事务
|
|
await db.query('COMMIT');
|
|
|
|
console.log(`成功修复 ${updatedCount} 个商品的图片路径`);
|
|
|
|
// 验证修复结果
|
|
const [remainingProducts] = await db.execute(
|
|
"SELECT COUNT(*) as count FROM products WHERE image_url LIKE '/uploads/product/%'"
|
|
);
|
|
|
|
if (remainingProducts[0].count === 0) {
|
|
console.log('所有图片路径修复完成!');
|
|
} else {
|
|
console.log(`还有 ${remainingProducts[0].count} 个图片路径未修复`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('修复图片路径时发生错误:', error);
|
|
|
|
// 回滚事务
|
|
try {
|
|
const db = getDB();
|
|
await db.query('ROLLBACK');
|
|
console.log('已回滚数据库事务');
|
|
} catch (rollbackError) {
|
|
console.error('回滚事务失败:', rollbackError);
|
|
}
|
|
}
|
|
}
|
|
|
|
// 如果直接运行此脚本
|
|
if (require.main === module) {
|
|
fixImagePaths()
|
|
.then(() => {
|
|
console.log('修复脚本执行完成');
|
|
process.exit(0);
|
|
})
|
|
.catch((error) => {
|
|
console.error('修复脚本执行失败:', error);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
module.exports = { fixImagePaths }; |