Skip to content

Commit 86226ff

Browse files
Oxyjunpedrosousa
andauthored
[D1] Adding info on resolving 'statement too long' errors while importing. (#17373)
* Resolving 'statement too long' errors while importing. * Apply suggestions from code review Co-authored-by: Pedro Sousa <[email protected]> * Changing into unordered bullet point. * Using unordered bullet points. --------- Co-authored-by: Pedro Sousa <[email protected]>
1 parent 2f81e5f commit 86226ff

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/content/docs/d1/build-with-d1/import-export-data.mdx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,34 @@ If you receive an error when trying to import an existing schema and/or dataset
165165
- If you have foreign key relationships between tables, ensure you are importing the tables in the right order. You cannot refer to a table that does not yet exist.
166166
- If you receive a `"cannot start a transaction within a transaction"` error, make sure you have removed `BEGIN TRANSACTION` and `COMMIT` from your dumped SQL statements.
167167

168+
### Resolve `Statement too long` error
169+
170+
If you encounter a `Statement too long` error when trying to import a large SQL file into D1, it means that one of the SQL statements in your file exceeds the maximum allowed length. To resolve this issue, try one of the following approaches:
171+
172+
- Convert a single large `INSERT` statement into multiple smaller `INSERT` statements. For example:
173+
174+
```sql
175+
INSERT INTO users (id, full_name, created_on)
176+
VALUES
177+
('01GREFXCN9519NRVXWTPG0V0BF', 'Catlaina Harbar', '2022-08-20 05:39:52'),
178+
('01GREFXCNBYBGX2GC6ZGY9FMP4', 'Hube Bilverstone', '2022-12-15 21:56:13'),
179+
...
180+
('01GREFXCNF67KV7FPPSEJVJMEW', 'Riane Zamora', '2022-12-24 06:49:04');
181+
```
182+
183+
- Break it into multiple `INSERT` statements:
184+
185+
```sql
186+
INSERT INTO users (id, full_name, created_on)
187+
VALUES
188+
('01GREFXCN9519NRVXWTPG0V0BF', 'Catlaina Harbar', '2022-08-20 05:39:52');
189+
INSERT INTO users (id, full_name, created_on)
190+
VALUES
191+
('01GREFXCNBYBGX2GC6ZGY9FMP4', 'Hube Bilverstone', '2022-12-15 21:56:13');
192+
```
193+
194+
- If you have a single large `INSERT` statement with many rows, break it into smaller chunks. For example, instead of inserting 1,000 rows in one statement, try splitting that into 250 rows.
195+
168196
## Next Steps
169197

170198
- Read the SQLite [`CREATE TABLE`](https://www.sqlite.org/lang_createtable.html) documentation.

0 commit comments

Comments
 (0)