Skip to content

🐛 BUG: d1 export produces unimportable sql files #5683

@hrueger

Description

@hrueger

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 INSERTs 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    d1Relating to D1

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions