fix(n8n): resolve duplicate key constraint on tag_entity during workflow import
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
n8n import:workflow --separate imports each JSON file independently. All 4 workflows shared the same tags (parapharmacy, scraper), so the second import tried to INSERT duplicate tag names, hitting the unique index on tag_entity.name. - Remove tags field from all 4 workflow JSON files (cosmetic, re-add via UI) - Add cleanup-db.js to wipe workflow data before import - Add --overwrite flag to import command as safety net - Add cleanup-db.js volume mount to n8n-init container
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Clean n8n workflow data before fresh import to avoid constraint violations.
|
||||
*/
|
||||
let Client;
|
||||
try {
|
||||
Client = require('/usr/local/lib/node_modules/n8n/node_modules/pg').Client;
|
||||
} catch {
|
||||
Client = require('pg').Client;
|
||||
}
|
||||
|
||||
const client = new Client({
|
||||
host: process.env.DB_POSTGRESDB_HOST || 'postgres',
|
||||
port: parseInt(process.env.DB_POSTGRESDB_PORT || '5432', 10),
|
||||
database: process.env.DB_POSTGRESDB_DATABASE || 'farmafinder',
|
||||
user: process.env.DB_POSTGRESDB_USER || 'farmafinder',
|
||||
password: process.env.DB_POSTGRESDB_PASSWORD,
|
||||
});
|
||||
|
||||
async function run() {
|
||||
await client.connect();
|
||||
console.log('[cleanup-db] Connected to PostgreSQL');
|
||||
|
||||
try {
|
||||
for (const table of [
|
||||
'workflows_tags',
|
||||
'webhook_entity',
|
||||
'execution_entity',
|
||||
'workflow_statistics',
|
||||
'workflow_archive',
|
||||
'workflow_entity',
|
||||
]) {
|
||||
try {
|
||||
const r = await client.query(`DELETE FROM ${table}`);
|
||||
if (r.rowCount > 0) console.log(`[cleanup-db] Deleted ${r.rowCount} rows from ${table}`);
|
||||
} catch (e) {
|
||||
if (e.code !== '42P01') console.error(`[cleanup-db] ${table}:`, e.message);
|
||||
}
|
||||
}
|
||||
console.log('[cleanup-db] Done');
|
||||
} finally {
|
||||
await client.end();
|
||||
}
|
||||
}
|
||||
|
||||
run();
|
||||
Reference in New Issue
Block a user