{"id":43921,"library":"sql-migrations-node","title":"node-sql-migrations","description":"Minimal raw SQL migration runner for Node.js that supports PostgreSQL and MySQL. Version 1.0.5 (last release appears to be 2018) is a low-activity library focused on raw SQL files and a simple CLI. Unlike Knex or Sequelize migrations, this library has zero ORM dependencies and uses plain SQL files with up/down pairs. It provides programmatic API (migrate, rollback, create) with promise support, configurable logger, optional SQL parameter substitution, and min migration timestamp filtering. Lacks built-in seeding or advanced features; maintained but no recent updates.","status":"maintenance","version":"1.0.5","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/dmitriiabramov/node-sql-migrations","tags":["javascript","node","sql","database","migration"],"install":[{"cmd":"npm install sql-migrations-node","lang":"bash","label":"npm"},{"cmd":"yarn add sql-migrations-node","lang":"bash","label":"yarn"},{"cmd":"pnpm add sql-migrations-node","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required if using PostgreSQL adapter (adapter: 'pg')","package":"pg","optional":true},{"reason":"Required if using MySQL adapter (adapter: 'mysql')","package":"mysql","optional":true}],"imports":[{"note":"This library uses CommonJS, not ESM. Using import will fail.","wrong":"import { run } from 'sql-migrations';","symbol":"run","correct":"const run = require('sql-migrations').run;"},{"note":"Programmatic API, returns a Promise.","wrong":"","symbol":"migrate","correct":"const migrate = require('sql-migrations').migrate;"},{"note":"Programmatic API, returns a Promise.","wrong":"","symbol":"rollback","correct":"const rollback = require('sql-migrations').rollback;"},{"note":"Must be called before run/migrate/rollback.","wrong":"","symbol":"setLogger","correct":"require('sql-migrations').setLogger({ log() {}, error() {} });"}],"quickstart":{"code":"const path = require('path');\nconst { run } = require('sql-migrations');\nrun({\n    migrationsDir: path.resolve(__dirname, 'migrations'),\n    host: process.env.DB_HOST || 'localhost',\n    port: parseInt(process.env.DB_PORT || '5432', 10),\n    db: process.env.DB_NAME || 'myapp',\n    user: process.env.DB_USER || 'user',\n    password: process.env.DB_PASSWORD || '',\n    adapter: 'pg'\n});\n\n// CLI: node migrate.js migrate\n// node migrate.js rollback\n// node migrate.js create my_migration","lang":"javascript","description":"Shows basic setup using CommonJS require with environment variables for config and adapter selection."},"warnings":[{"fix":"Use require() instead of import.","message":"Package is CommonJS only; ESM import will fail.","severity":"gotcha","affected_versions":">=1.0"},{"fix":"npm install pg or npm install mysql alongside sql-migrations.","message":"Adapter packages (pg, mysql) must be installed separately; not listed as peer dependencies.","severity":"gotcha","affected_versions":">=1.0"},{"fix":"Create the database manually before running migrations.","message":"The database must exist before running migrations; no automatic creation.","severity":"gotcha","affected_versions":">=1.0"},{"fix":"Consider using an actively maintained migration tool like node-pg-migrate or Knex.","message":"Library has not been updated since 2018; bugs may remain unpatched.","severity":"deprecated","affected_versions":"1.0.5"},{"fix":"Use path.resolve(__dirname, 'migrations') instead of a relative string.","message":"Configuration requires absolute path for migrationsDir; relative paths fail silently.","severity":"gotcha","affected_versions":">=1.0"}],"env_vars":null,"search_vec":"'1.0.5':18 '2018':24 'activ':29 'advanc':86 'api':62 'appear':21 'built':82 'built-in':81 'cli':39 'configur':69 'creat':65 'databas':96 'depend':50 'featur':87 'file':35,55 'filter':79 'focus':31 'javascript':93 'knex':41 'lack':80 'last':19 'librari':30,46 'logger':70 'low':28 'low-act':27 'maintain':88 'migrat':4,8,44,63,77,97 'min':76 'minim':5 'mysql':16 'node':2,94 'node-sql-migr':1 'node.js':11 'option':71 'orm':49 'pair':58 'paramet':73 'plain':53 'postgresql':14 'programmat':61 'promis':67 'provid':60 'raw':6,33 'recent':91 'releas':20 'rollback':64 'runner':9 'seed':84 'sequel':43 'simpl':38 'sql':3,7,34,54,72,95 'substitut':74 'support':13,68 'timestamp':78 'unlik':40 'up/down':57 'updat':92 'use':52 'version':17 'zero':48","created_at":"2026-06-05T17:02:07.332639+00:00","updated_at":"2026-06-05T17:02:07.332639+00:00","problems":[{"fix":"Use const { run } = require('sql-migrations');","cause":"Using import instead of require, or omitting .run suffix.","error":"TypeError: require(...).run is not a function"},{"fix":"Run: npm install pg","cause":"PostgreSQL adapter not installed.","error":"Error: Cannot find module 'pg'"},{"fix":"Ensure the first migration SQL creates the 'migrations' table as per docs (or manually create it).","cause":"Migrations table not created yet; first migration must create it.","error":"Error: relation \"migrations\" does not exist"}],"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/dmitriiabramov/node-sql-migrations#readme","github":"ssh://git@github.com/dmitriiabramov/node-sql-migrations","docs":null,"changelog":null,"pypi":null,"npm":"sql-migrations-node","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}}