drizzle-team / drizzle-team/drizzle-orm

libsql migrator uses PostgreSQL SERIAL syntax instead of SQLite AUTOINCREMENT

Open
#5,678 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

## Bug Description

The `drizzle-orm/libsql/migrator.js` creates the `__drizzle_migrations` table using PostgreSQL syntax (`SERIAL`) instead of SQLite syntax (`INTEGER PRIMARY KEY AUTOINCREMENT`).

## File

`drizzle-orm/libsql/migrator.js` line 9:
```js
const migrationTableCreate = sql`
CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
id SERIAL PRIMARY KEY,
hash text NOT NULL,
created_at numeric
)
`;
```

## Expected

```js
id INTEGER PRIMARY KEY AUTOINCREMENT,
```

## Impact

When running `drizzle-kit migrate` against a fresh SQLite/libsql database, the `CREATE TABLE` statement fails or hangs silently because `SERIAL` is not valid SQLite syntax. This causes `drizzle-kit migrate` to hang indefinitely without error output.

## Environment

- drizzle-orm: 0.45.2
- driver: libsql (@libsql/client 0.17.3)
- dialect: sqlite
- Node.js: 24.6.0

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.