cloudflare / cloudflare/developer-platform

🐛 BUG: `d1 export` produces unimportable sql files

Open
#41 4 comments 5 reactions 0 assignees View on GitHub
product:d1
Dominant language
No language data
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

### Which Cloudflare product(s) does this pertain to?

D1

### What version(s) of the tool(s) are you using?

3.51.2 [Wrangler]

### What version of Node are you using?

21.6.10

### What operating system and version are you using?

macOS Sonoma 14.4.1

### Describe the Bug

### Observed behavior
When exporting a D1 database with some relations using `npx wrangler d1 export`, it can generate an SQL file that cannot be imported again (`✘ [ERROR] no such table: main.B`). This is due to INSERTs happening before all tables are created.
I've prepared a minimal reproduction repository: https://github.com/hrueger/d1-export-order

### Expected behavior
All `CREATE TABLE` queries happen first, all `INSERT`s afterwards.

### Steps to reproduce
See https://github.com/hrueger/d1-export-order

in short, you need two tables, where the first table has a foreign key to the second table. Insert one row each, export that and try to import it again using `npx wrangler execute ... --file ...`

In the minimal reproduction there's also a fixed sql file, where the `INSERT` is just moved to the bottom.

### Please provide a link to a minimal reproduction

https://github.com/hrueger/d1-export-order

### Please provide any relevant error logs

```
✘ [ERROR] no such table: main.B
```

As per our discord conversation on friday, I'm tagging @geelen. Thanks for looking into this!

Contributor guide

Open the contributing guide

Research direction

Start with the minimal reproduction repository and run `npx wrangler d1 export`, then try importing the generated file with `npx wrangler execute ... --file ...`. Compare the generated SQL with the fixed SQL file, and verify that exports with foreign-key relations can be imported successfully, with all tables created before rows are inserted.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, sql
Domain
cli, database
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.