{"id":43761,"library":"resolve-eventstore-mysql","title":"reSolve MySQL Event Store Adapter","description":"An adapter for the reSolve CQRS/ES framework that persists events in MySQL databases. Current stable version 0.26.5, released 2021. Works with reSolve v0.26.x (Node ≥10.9). Differentiators: automates schema initialization for event sourcing tables (events, snapshots, subscribers), supports internal and external MySQL via Knex, integrates seamlessly with reSolve's query-side projections. Requires MySQL 5.7+ and a configured reSolve application. Alternative to postgresql or sqlite adapters.","status":"maintenance","version":"0.26.5","language":"javascript","source_language":"en","source_url":"https://github.com/reimagined/resolve","tags":["javascript","cqrs","eventsourcing","es","ddd"],"install":[{"cmd":"npm install resolve-eventstore-mysql","lang":"bash","label":"npm"},{"cmd":"yarn add resolve-eventstore-mysql","lang":"bash","label":"yarn"},{"cmd":"pnpm add resolve-eventstore-mysql","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"MySQL client driver used internally for database operations","package":"mysql2","optional":false},{"reason":"SQL query builder for schema migrations and cross-database compatibility","package":"knex","optional":false}],"imports":[{"note":"Package is ESM-only since v0.26; named import 'createAdapter' also works (same default export).","wrong":"const createAdapter = require('resolve-eventstore-mysql')","symbol":"default","correct":"import createAdapter from 'resolve-eventstore-mysql'"},{"note":"Named import is preferred for clarity.","wrong":"const { createAdapter } = require('resolve-eventstore-mysql')","symbol":"createAdapter","correct":"import { createAdapter } from 'resolve-eventstore-mysql'"},{"note":"Utility function to manually initialize event tables; rarely needed as adapter auto-initializes on first connect.","wrong":"","symbol":"initEvents","correct":"import { initEvents } from 'resolve-eventstore-mysql'"}],"quickstart":{"code":"import createAdapter from 'resolve-eventstore-mysql';\n\nconst eventStoreAdapter = createAdapter({\n  host: process.env.MYSQL_HOST || 'localhost',\n  port: parseInt(process.env.MYSQL_PORT || '3306', 10),\n  user: process.env.MYSQL_USER || 'root',\n  password: process.env.MYSQL_PASSWORD || '',\n  database: process.env.MYSQL_DATABASE || 'resolve_events',\n  poolSize: 10,\n  table: 'events',\n  snapshotsTable: 'snapshots',\n  subscribersTable: 'subscribers',\n});\n\nawait eventStoreAdapter.connect();\n\nconst events = await eventStoreAdapter.loadEvents({ type: 'UserCreated', aggregateId: '123' });\nconsole.log(events);\n\nawait eventStoreAdapter.disconnect();","lang":"typescript","description":"Connects to MySQL, loads events by aggregate ID and event type, then disconnects."},"warnings":[{"fix":"Switch to ES module imports or use dynamic import().","message":"Version 0.26+ changed export to ESM-only; CommonJS require() throws error.","severity":"breaking","affected_versions":">=0.26.0"},{"fix":"Use 'table' instead of 'eventsTable' in adapter config.","message":"Old config option 'eventsTable' replaced by 'table' in v0.23.","severity":"deprecated","affected_versions":">=0.23.0 <0.23?"},{"fix":"Grant CREATE, ALTER, INSERT, SELECT on the target database before startup.","message":"Database schema not auto-created if using non-root MySQL user without CREATE privileges.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Reduce poolSize or increase MySQL max_connections.","message":"Connection pool size defaults to 10; too many concurrent connections may exceed MySQL limits (default 151).","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use 'snapshotsTable' if you need to customize; defaults to 'snapshots'.","message":"Snapshot table name option 'snapshotsTable' renamed to 'snapshotsTable' in v0.24 (was 'snapshotsTable'?).","severity":"deprecated","affected_versions":">=0.24.0 <0.26?"}],"env_vars":null,"search_vec":"'0.26.5':22 '10.9':30 '2021':24 '5.7':60 'adapt':5,7,71 'altern':66 'applic':65 'autom':32 'configur':63 'cqrs':73 'cqrs/es':11 'current':19 'databas':18 'ddd':76 'differenti':31 'es':75 'event':3,15,36,39 'eventsourc':74 'extern':45 'framework':12 'initi':34 'integr':49 'intern':43 'javascript':72 'knex':48 'mysql':2,17,46,59 'node':29 'persist':14 'postgresql':68 'project':57 'queri':55 'query-sid':54 'releas':23 'requir':58 'resolv':1,10,27,52,64 'schema':33 'seamless':50 'side':56 'snapshot':40 'sourc':37 'sqlite':70 'stabl':20 'store':4 'subscrib':41 'support':42 'tabl':38 'v0.26.x':28 'version':21 'via':47 'work':25","created_at":"2026-06-05T17:01:21.320580+00:00","updated_at":"2026-06-05T17:01:21.320580+00:00","problems":[{"fix":"npm install resolve-eventstore-mysql@0.26.5","cause":"Package not installed or wrong version.","error":"Error: Cannot find module 'resolve-eventstore-mysql'"},{"fix":"Use import or dynamic import(): const createAdapter = (await import('resolve-eventstore-mysql')).default;","cause":"Using CommonJS require() with ESM-only package v0.26+.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported."},{"fix":"CREATE DATABASE resolve_events; or change database config.","cause":"Specified MySQL database does not exist.","error":"Error: ER_BAD_DB_ERROR: Unknown database 'resolve_events'"},{"fix":"Drop existing tables or use different table names in config.","cause":"Adapter tried to create tables but they already exist with different schema.","error":"Error: ER_TABLE_EXISTS_ERROR: Table 'events' already exists"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/reimagined/resolve/tree/master/packages/adapters/eventstore-adapters/resolve-eventstore-mysql#readme","github":"https://github.com/reimagined/resolve","docs":null,"changelog":null,"pypi":null,"npm":"resolve-eventstore-mysql","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}