fix: remove explicit BEGIN/COMMIT to avoid database locked error

sqlx connection pool can dispatch each execute to a different connection,
so BEGIN on one and INSERT on another causes a lock. Sequential inserts
without explicit transaction management avoids this.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Le-King-Fu 2026-02-08 04:13:21 +00:00
parent 88219e657f
commit 764fdad6db

View file

@ -16,14 +16,7 @@ export async function insertBatch(
const db = await getDb();
let insertedCount = 0;
// Process in batches of 500
const batchSize = 500;
for (let i = 0; i < transactions.length; i += batchSize) {
const batch = transactions.slice(i, i + batchSize);
await db.execute("BEGIN TRANSACTION", []);
try {
for (const tx of batch) {
for (const tx of transactions) {
await db.execute(
`INSERT INTO transactions (date, description, amount, source_id, file_id, original_description, category_id, supplier_id)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`,
@ -40,12 +33,6 @@ export async function insertBatch(
);
insertedCount++;
}
await db.execute("COMMIT", []);
} catch (e) {
await db.execute("ROLLBACK", []);
throw e;
}
}
return insertedCount;
}