MySQL adapter for remix/data-table.
Use this package when you want data-table APIs backed by mysql2.
- Native
mysql2Integration: Works withmysql2/promisePoolandPoolConnectioninstances - Full
data-tableAPI Support: Queries, relations, writes, and transactions - Adapter-Owned Compiler: SQL compilation lives in this adapter, with optional shared pure helpers from
data-table - Migration DDL Support: Compiles and executes
DataMigrationOperationoperations forremix/data-table/migrations - MySQL Capabilities Enabled By Default:
returning: falsesavepoints: trueupsert: truetransactionalDdl: falsemigrationLock: true
npm i remix mysql2import { createPool } from 'mysql2/promise'
import { createDatabase } from 'remix/data-table'
import { createMysqlDatabaseAdapter } from 'remix/data-table-mysql'
let pool = createPool(process.env.DATABASE_URL as string)
let db = createDatabase(createMysqlDatabaseAdapter(pool))Use db.query(...), relation loading, and transactions from remix/data-table.
Import any driver-specific types you need directly from mysql2/promise.
data-table-mysql reports this capability set by default:
returning: falsesavepoints: trueupsert: truetransactionalDdl: falsemigrationLock: true
Capability overrides are mainly for tests where you want to force or disable specific behavior checks. In production, keep defaults so adapter behavior matches MySQL behavior.
import { createMysqlDatabaseAdapter } from 'remix/data-table-mysql'
let adapter = createMysqlDatabaseAdapter(pool, {
capabilities: {
upsert: false,
},
})MySQL does not natively support SQL RETURNING. In this adapter, using returning on write
operations throws DataTableQueryError.
Use write metadata (affectedRows, insertId) on MySQL, or switch adapters when returned rows
are required.
import { DataTableQueryError } from 'remix/data-table'
try {
await db
.query(Accounts)
.insert({ email: 'a@example.com', status: 'active' }, { returning: ['id'] })
} catch (error) {
if (error instanceof DataTableQueryError) {
// insert() returning is not supported by this adapter
}
}data-table- Core query/relations APIdata-schema- Schema parsing and validationdata-table-postgres- PostgreSQL adapterdata-table-sqlite- SQLite adapter
See LICENSE