paperclipai/paperclip · error
Unsafe database name: ${databaseName}
Error message
Unsafe database name: ${databaseName} What it means
Identifier-safety guard in ensurePostgresDatabase: the database name is interpolated into SQL (CREATE DATABASE / connection handling), so anything outside a plain ASCII identifier pattern is rejected to prevent injection through the name.
Source
Thrown at packages/db/src/client.ts:906
const insertValues: string[] = [];
if (columnNames.has("hash")) {
insertColumns.push(quoteIdentifier("hash"));
insertValues.push(quoteLiteral(hash));
}
if (columnNames.has("name")) {
insertColumns.push(quoteIdentifier("name"));
insertValues.push(quoteLiteral(migrationFile));
}
if (columnNames.has("created_at")) {
insertColumns.push(quoteIdentifier("created_at"));
insertValues.push(quoteLiteral(String(folderMillis)));
}
if (insertColumns.length === 0) break;
await sql.unsafe(
`INSERT INTO ${qualifiedTable} (${insertColumns.join(", ")}) VALUES (${insertValues.join(", ")})`,
);
repairedMigrations.push(migrationFile);
}
} finally {
await sql.end();
}
const refreshed = await inspectMigrations(url);
return {
repairedMigrations,
remainingMigrations:
refreshed.status === "needsMigrations" ? refreshed.pendingMigrations : [],
};
}
async function discoverMigrationTableSchema(sql: ReturnType<typeof postgres>): Promise<string | null> {
const rows = await sql<{ schemaName: string }[]>`
SELECT n.nspname AS "schemaName"View on GitHub (pinned to 01ad858492)
Solutions
- Use a database name matching the allowed pattern (no unsafe characters or traversal).
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at packages/db/src/client.ts:826 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/d56a99da13745750.
Report an issue: GitHub.