Registry / database / serverless-mysql-rw

serverless-mysql-rw

JSON →
library1.0.12jsnpmunverified

A lightweight MySQL wrapper for serverless environments (AWS Lambda, Cloud Functions) that automatically detects read vs. write queries and routes them to appropriate read replicas or the primary database. Version 1.0.12 is the latest stable release, updated sporadically. Key differentiators: zero-config read/write splitting using SQL parsing, connection pooling optimized for serverless cold starts, and promise-based API. Simpler than typeorm or knex for basic MySQL access, with built-in replica routing.

npm install serverless-mysql-rw
INSTALL
IMPORT
SIG · SERVERLESS-MYSQL-R
S
serverless-mysql-rw
databasejavascriptv1.0.12
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default
import mysql from 'serverless-mysql-rw'
const mysql = require('serverless-mysql-rw')
ESM-only since v1. Uses named exports for configuration.
ServerlessMySQL
import { ServerlessMySQL } from 'serverless-mysql-rw'
import ServerlessMySQL from 'serverless-mysql-rw'
Named export for class-based usage.
MySQLConfig
import type { MySQLConfig } from 'serverless-mysql-rw'
import { MySQLConfig } from 'serverless-mysql-rw'
Type-only import for TypeScript users.
QueryOptions
import { QueryOptions } from 'serverless-mysql-rw'
import { queryOptions } from 'serverless-mysql-rw'
Case-sensitive; lowercase 'q' breaks.

Demonstrates setup with read/write hosts, automatic query routing, and usage in a serverless handler.

import mysql from 'serverless-mysql-rw'; const db = mysql({ read: { host: process.env.DB_READ_HOST ?? 'localhost', user: process.env.DB_USER ?? 'user', password: process.env.DB_PASSWORD ?? '', database: process.env.DB_NAME ?? 'mydb' }, write: { host: process.env.DB_WRITE_HOST ?? 'localhost', user: process.env.DB_USER ?? 'user', password: process.env.DB_PASSWORD ?? '', database: process.env.DB_NAME ?? 'mydb' } }); export async function handler(event: any) { // SELECT queries automatically go to read replica const users = await db.query('SELECT * FROM users WHERE id = ?', [1]); // UPDATE goes to write primary await db.query('UPDATE users SET name = ? WHERE id = ?', ['Alice', 1]); return { statusCode: 200, body: JSON.stringify(users) }; }
Debug
Known issues
gotchaAutomatic read/write detection uses simple SQL keyword parsing; complex queries with subqueries or CTEs may be misrouted.
fix
Use explicit `db.read()` or `db.write()` methods for ambiguous queries.
affects: >=1.0.0
breakingDefault export removed in v1.0.0; must use named import or factory function.
fix
Replace `import mysql from 'serverless-mysql-rw'` with `import mysql from 'serverless-mysql-rw'` (factory) or `import { ServerlessMySQL } from 'serverless-mysql-rw'`.
affects: >=1.0.0
gotchaConnection pool is not automatically closed; may cause Lambda function timeout on shutdown.
fix
Call `db.end()` at the end of your handler or use `await db.end()` in a finally block.
affects: <1.0.0
deprecatedThe `replica` config option is deprecated; use `read` instead.
fix
Rename `replica` to `read` in the config object.
affects: >=1.0.0
Errors
Common errors & fixes
TypeError: mysql is not a function
Attempting to use a named export as default import
fix
Use `import mysql from 'serverless-mysql-rw'` (factory) or `import { ServerlessMySQL } from 'serverless-mysql-rw'`.
Error: Cannot find module 'mysql2'
Peer dependency mysql2 not installed
fix
Run `npm install mysql2`.
Read replica is undefined: assuming write
Misconfigured read config or missing `read` key
fix
Ensure `read` object has all required fields (host, user, password, database).
Cannot use 'import.meta' outside a module
Running ESM code in a CommonJS environment
fix
Set `"type": "module"` in package.json or use .mjs extension.
Upgrade
Version history
1.0.12latest on npm
Audit
Dependencies
mysql2optionalUnderlying MySQL driver for all database operations
Agent activity
7 hits · last 30 days
node
6
Meta
1
Resources
serverless-mysql-rw — npm install serverless-mysql-rw · libregistry