node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


NodeJS SQL DDL Synchronization

Build Status


npm install sql-ddl-sync


  • MySQL
  • PostgreSQL


This module is part of ORM. It's used synchronize model tables in supported dialects. Sorry there is no API documentation for now but there are a couple of tests you can read and find out how to use it if you want.


Install orm & the required driver (eg: mysql). Create a file with the contents below and change insert your database credentials. Run once and you'll see table ddl_sync_test appear in your database. Then make some changes to it (add/drop/change columns) and run the code again. Your table should always return to the same structure.

var orm   = require("orm");
var mysql = require("mysql");
var Sync  = require("sql-ddl-sync").Sync;
orm.connect("mysql://username:password@localhost/database", function (err, db) {
    if (err) throw err;
    var driver = db.driver;
    var sync = new Sync({
        dialect : "mysql",
        driver  : driver,
        debug   : function (text) {
            console.log("> %s", text);
    sync.defineCollection("ddl_sync_test", {
    id     : { type: "serial", key: true, serial: true },
    name   : { type: "text", required: true },
    age    : { type: "integer" },
    male   : { type: "boolean" },
    born   : { type: "date", time: true },
    born2  : { type: "date" },
    int2   : { type: "integer", size: 2 },
    int4   : { type: "integer", size: 4 },
    int8   : { type: "integer", size: 8 },
    float4 : { type: "number",  size: 4 },
    float8 : { type: "number",  size: 8 },
    photo  : { type: "binary" }
    sync.sync(function (err) {
        if (err) {
            console.log("> Sync Error");
        } else {
            console.log("> Sync Done");


To test, first make sure you have development dependencies installed. Go to the root folder and do:

npm install

Then, just run the tests.

npm test

If you have a supported database server and want to test against it, first install the module:

# if you have a mysql server 
npm install mysql
# if you have a postgresql server 
npm install pg

And then run:

node test/run-db --uri 'mysql://username:password@localhost/database'