初次提交
This commit is contained in:
89
fix-image-paths.js
Normal file
89
fix-image-paths.js
Normal file
@@ -0,0 +1,89 @@
|
||||
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 };
|
||||
Reference in New Issue
Block a user