cloudflare / cloudflare/developer-platform
D1 doesn't include enough information when foreign key constraints fail
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 1
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I have this Drizzle schema
```ts
export const users = sqliteTable(
"users",
{
id: text("id").primaryKey(),
name: text("name").notNull(),
// ...
})
export const accounts = sqliteTable(
"accounts",
{
id: text("id").primaryKey(),
userId: text("userId")
.notNull()
.references(() => users.id),
// ...
})
```
Which produces this migration
```sql
CREATE TABLE `users` (
`id` text PRIMARY KEY NOT NULL,
`name` text NOT NULL
);
CREATE TABLE `accounts` (
`id` text PRIMARY KEY NOT NULL,
`accountId` text NOT NULL,
`userId` text NOT NULL,
FOREIGN KEY (`userId`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
);
```
When I try to delete a user that has accounts, I get this error:
```ts
SqliteError: FOREIGN KEY constraint failed
at proxy (/home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:64941:47)
at /home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:74841:32
at dispatch (/home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:72483:27)
at /home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:72484:24
at /home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:71944:15
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async dispatch (/home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:72483:21)
at async cors2 (/home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:73520:9)
at async dispatch (/home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:72483:21)
at async /home/vlady/code/gyarns/node_modules/.pnpm/drizzle-kit@0.30.2/node_modules/drizzle-kit/bin.cjs:74793:9 {
code: 'SQLITE_CONSTRAINT_FOREIGNKEY'
}
```
I get the same `FOREIGN KEY constraint failed` error in the D1 dashboard when I use the GUI to delete a user with an account. These errors are hard to debug in big schemas because they don't say exactly which constraint failed.
How can we include a name of the constraint in the error?
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con lo schema TypeScript e la migrazione SQLite generata mostrati nel report, quindi riproduci l’eliminazione dell’utente che fallisce nella dashboard D1. Il payload non nomina alcun file o test del repository; il completamento significa che il foreign-key failure identifica il vincolo specifico coinvolto invece di riportare soltanto un errore generico.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- sqlite, typescript
- Ambito
- databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100