From 4e8e8b898b7df9d8f0e8ca9515dcf824feede0ab Mon Sep 17 00:00:00 2001 From: gituib Date: Wed, 6 May 2026 03:26:46 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8B=89=E5=8F=96=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: traeagent --- backend/scripts/migrate-all.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/backend/scripts/migrate-all.js b/backend/scripts/migrate-all.js index aa51746..c5a8f91 100644 --- a/backend/scripts/migrate-all.js +++ b/backend/scripts/migrate-all.js @@ -724,7 +724,7 @@ async function migrateIdleDeviceAndBusiness() { }, name: { type: sequelize.Sequelize.STRING, allowNull: false }, description: { type: sequelize.Sequelize.TEXT }, - status: { type: sequelize.Sequelize.ENUM('active', 'offline'), defaultValue: 'active' }, + status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' }, offlineDate: { type: sequelize.Sequelize.DATE }, offlineReason: { type: sequelize.Sequelize.STRING }, createdAt: { type: sequelize.Sequelize.DATE, allowNull: false }, @@ -746,7 +746,7 @@ async function migrateIdleDeviceAndBusiness() { name: { type: sequelize.Sequelize.STRING, allowNull: false }, location: { type: sequelize.Sequelize.STRING }, capacity: { type: sequelize.Sequelize.INTEGER, defaultValue: 100 }, - status: { type: sequelize.Sequelize.ENUM('active', 'inactive'), defaultValue: 'active' }, + status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' }, description: { type: sequelize.Sequelize.TEXT }, createdAt: { type: sequelize.Sequelize.DATE, allowNull: false }, updatedAt: { type: sequelize.Sequelize.DATE, allowNull: false }, @@ -803,10 +803,20 @@ async function migrateDevicePositionIndexes() { for (const idx of indexesToCreate) { console.log(` → 为 ${tableName} 表添加复合索引 ${idx.name}...`); try { - const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, { - type: sequelize.QueryTypes.SELECT, - }); - const indexExists = existingIndexes.some(existing => existing.Key_name === idx.name); + let indexExists = false; + + if (dialect === 'sqlite') { + const indexList = await sequelize.query( + `SELECT name FROM sqlite_master WHERE type='index' AND name=?`, + { replacements: [idx.name], type: sequelize.QueryTypes.SELECT } + ); + indexExists = indexList.length > 0; + } else { + const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, { + type: sequelize.QueryTypes.SELECT, + }); + indexExists = existingIndexes.some(existing => existing.Key_name === idx.name); + } if (indexExists) { console.log(' → 索引已存在,跳过');