comparing-database-schemas
Process use when you need to work with schema comparison. This skill provides database schema diff and sync with comprehensive guidance and automation. Trigger with phrases like "compare schemas", "diff databases", or "sync database schemas".
Install
mkdir -p .claude/skills/comparing-database-schemas && curl -L -o skill.zip "https://mcp.directory/api/skills/download/4788" && unzip -o skill.zip -d .claude/skills/comparing-database-schemas && rm skill.zipInstalls to .claude/skills/comparing-database-schemas
About this skill
Database Diff Tool
Overview
Compare database schemas between two environments (development vs. staging, staging vs.
Prerequisites
- Connection credentials to both source and target databases
psqlormysqlCLI configured to connect to both environments- Read access to
information_schemaandpg_catalog(PostgreSQL) orinformation_schema(MySQL) - Permission to run
pg_dump --schema-onlyfor full schema extraction - Understanding of which environment is the "source of truth" (typically the migration-managed environment)
Instructions
-
Extract the full schema from both databases for comparison:
- PostgreSQL:
pg_dump --schema-only --no-owner --no-privileges -f schema_source.sql source_dband repeat for target_db - MySQL:
mysqldump --no-data --routines --triggers source_db > schema_source.sql - Alternatively, query
information_schemadirectly for programmatic comparison
- PostgreSQL:
-
Compare tables present in each database:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_catalog = 'source_db' EXCEPT SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_catalog = 'target_db'- This reveals tables that exist in source but not in target (and vice versa)
-
Compare columns for each shared table:
- Query
information_schema.columnsfrom both databases for:column_name,data_type,character_maximum_length,is_nullable,column_default,ordinal_position - Flag differences in data type, nullability, default values, and column ordering
- Detect added columns (in source, not target) and dropped columns (in target, not source)
- Query
-
Compare indexes:
- PostgreSQL: Query
pg_indexesforindexname,indexdefon each database - MySQL: Query
information_schema.STATISTICSforINDEX_NAME,COLUMN_NAME,NON_UNIQUE - Flag missing, extra, or differently-defined indexes
- PostgreSQL: Query
-
Compare constraints (primary keys, foreign keys, unique, check):
- Query
information_schema.table_constraintsandinformation_schema.key_column_usage - Detect missing foreign keys, changed constraint names, and altered check constraint expressions
- Query
-
Compare functions, stored procedures, and triggers:
- PostgreSQL: Query
pg_procfor function signatures andpg_triggerfor trigger definitions - MySQL: Query
information_schema.ROUTINESandinformation_schema.TRIGGERS - Compare function bodies for logical differences
- PostgreSQL: Query
-
Compare enum types and custom types (PostgreSQL):
- Query
pg_typeandpg_enumfor enum label differences - Detect added or removed enum values (note: PostgreSQL only supports adding enum values, not removing)
- Query
-
Generate a structured diff report categorizing differences as:
- Added: Objects in source not present in target (require CREATE statements)
- Removed: Objects in target not present in source (require DROP statements, confirm intentional)
- Modified: Objects differing between source and target (require ALTER statements)
-
Generate migration SQL to synchronize the target database to match the source:
- CREATE TABLE for new tables, ALTER TABLE ADD COLUMN for new columns
- ALTER TABLE ALTER COLUMN for type changes, ALTER TABLE DROP COLUMN for removed columns
- CREATE INDEX / DROP INDEX for index differences
- Include transaction wrapping and rollback-safe operations
-
Validate the generated migration by applying it to a copy of the target database and re-running the diff. The second diff should report zero differences, confirming the migration produces the expected state.
Output
- Schema diff report listing all differences categorized by type (added, removed, modified)
- Migration SQL script to synchronize target schema to match source
- Rollback SQL script to reverse the migration if needed
- Side-by-side comparison of differing object definitions
- Drift detection summary highlighting changes not tracked in migration files
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Connection refused to one database | Network or credential issue on source or target | Verify connection strings; check firewall rules; confirm credentials work with direct psql or mysql connection |
Permission denied on pg_catalog queries | User lacks read access to system catalogs | Grant pg_read_all_settings role; or use pg_dump --schema-only which requires fewer privileges |
| False positive differences from default value formatting | PostgreSQL normalizes default expressions differently in different versions | Normalize default value strings before comparison; ignore whitespace differences; compare semantic equivalence |
| Enum type modification blocked | PostgreSQL does not support removing enum values or reordering | Create a new enum type, migrate the column, drop the old type; document this as a multi-step migration |
| Generated migration fails on target | Target has data that violates new constraints | Add data validation queries before constraint creation; backfill default values; handle edge cases in migration |
Examples
Detecting schema drift between staging and production: After 3 months without auditing, the diff reveals: 2 columns added to production manually (not in migrations), 1 index missing from staging, and 3 functions with different implementations. A migration script is generated to bring staging in sync, and the manual production changes are backported into migration files.
Pre-deployment schema validation: Before deploying a release with 5 migration files, run the diff between the post-migration staging schema and the expected schema. The diff catches a migration that accidentally dropped a constraint that a later migration depends on. The migration ordering is fixed before production deployment.
Comparing PostgreSQL schemas across major version upgrade: Schema extracted from PostgreSQL 14 and compared against PostgreSQL 16 after migration. Diff reveals function signature changes for built-in function calls, updated default values for new parameters, and deprecated syntax in stored procedures. Migration script updates function definitions for the new version.
Resources
- PostgreSQL information_schema: https://www.postgresql.org/docs/current/information-schema.html
- MySQL information_schema: https://dev.mysql.com/doc/refman/8.0/en/information-schema.html
- pg_dump schema-only mode: https://www.postgresql.org/docs/current/app-pgdump.html
- migra (PostgreSQL schema diff tool): https://github.com/djrobstep/migra
- Skeema (MySQL schema management): https://www.skeema.io/
More by jeremylongshore
View all skills by jeremylongshore →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversExtend your developer tools with GitHub MCP Server for advanced automation, supporting GitHub Student and student packag
Desktop Commander MCP unifies code management with advanced source control, git, and svn support—streamlining developmen
Mobile Next offers fast, seamless mobile automation for iOS and Android. Automate apps, extract data, and simplify mobil
Unlock browser automation studio with Browserbase MCP Server. Enhance Selenium software testing and AI-driven workflows
Powerful MCP server for Slack with advanced API, message fetching, webhooks, and enterprise features. Robust Slack data
Integrate Stripe for seamless payment processing, credit card payments, and customer management in e-commerce and billin
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.