drizzle-team / drizzle-team/drizzle-orm
libsql migrator uses PostgreSQL SERIAL syntax instead of SQLite AUTOINCREMENT
- 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
Assessment
This issue has not been assessed yet.