cloudflare / cloudflare/developer-platform

D1Database.exec incomplete input error caused by multi-line SQL.

Ouverte
#8 4 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
awaiting-response:cloudflare product:d1
Langage dominant
Aucune donnée de langage
Étoiles
1
Forks
0
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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

D1

### What versions & operating system are you using?

Wrangler v4.14.1, Node v20.18.3, Linux x86_64 6.6.85-2-MANJARO

### Please provide a link to a minimal reproduction

_No response_

### Describe the Bug

Calls to the `D1Database` `exec` method with a multi-line migration script fail with error:

```sh
✘ [ERROR] Error: D1_EXEC_ERROR: Error in line 1:
CREATE TABLE "users" (: incomplete input: SQLITE_ERROR

at D1DatabaseSessionAlwaysPrimary.exec (cloudflare-internal:d1-api:201:19)
```

To avoid this error, I had to replace all new-lines in my otherwise working migration script with a space:

```ts
await env.siteDbTemp.exec(migration_sql.replaceAll(/\n/gm, " "));
```

The same migration script works in SQLite and it works when sending it to the D1 API via fetch, but it doesn't work locally with a bound `D1Database` instance in my Cloudflare Pages/functions project. I haven't tested it live on Cloudflare.

### Please provide any relevant error logs

_No response_

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par reproduire l’échec de migration multiligne avec une instance de D1Database liée localement, puis comparez-le avec le même script dans SQLite et via le chemin fetch de la D1 API. Suivez le traitement des entrées multilignes par D1Database.exec ; le travail est terminé lorsque l’instance liée accepte le script de migration d’origine sans remplacer les retours à la ligne.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
sql, sqlite, typescript
Domaine
database
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.