packages/data-table-mysql/README.md
MySQL adapter for remix/data-table.
Use this package when you want data-table APIs backed by mysql2.
mysql2 Integration: Works with mysql2/promise Pool and PoolConnection instancesdata-table API Support: Queries, relations, writes, and transactionsdata-tableDataMigrationOperation operations for remix/data-table/migrationsreturning: falsesavepoints: trueupsert: truetransactionalDdl: falsemigrationLock: truenpm i remix mysql2
import { 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: trueCapability 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,
},
})
returning On MySQLMySQL 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: '[email protected]', 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 adapterSee LICENSE