Drizzle TeamDT
Drizzle Team3y ago
4 replies
tomeverson

NeonDB: Migration Taking Long

Hi, I have been using dirrzle with neon DB, and it has been a great experience. However, once I changed my schema a lil bit and migrate again, it was taking extremely long time and query is never executed.

db/index.ts
import { neon, neonConfig } from "@neondatabase/serverless";
import { drizzle } from "drizzle-orm/neon-http";
import * as schema from "@/db/schema";
import "dotenv/config";

// create database connection

neonConfig.fetchConnectionCache = true;

const connection = neon(process.env.DATABASE_URL!);

export const db = drizzle(connection, { schema: schema });


db/migrate.ts
import { migrate } from "drizzle-orm/neon-http/migrator";
import { neon, neonConfig } from "@neondatabase/serverless";
import { drizzle } from "drizzle-orm/neon-http";

import "dotenv/config";

// inspired by Raphael Moreau @rphlmr for Postgres, extended for Planetscale
const runMigrate = async () => {
  if (!process.env.DATABASE_URL) {
    throw new Error("DATABASE_URL is not defined");
  }

  neonConfig.fetchConnectionCache = true;

  const connection = neon(process.env.DATABASE_URL!);

  const db = drizzle(connection);

  console.log("⏳ Running migrations...");

  const start = Date.now();

  await migrate(db, { migrationsFolder: "migrations" });

  const end = Date.now();

  console.log(`✅ Migrations completed in ${end - start}ms`);

  process.exit(0);
};

runMigrate().catch((err) => {
  console.error("❌ Migration failed");
  console.error(err);
  process.exit(1);
});


package.json
  "scripts": {
    "start": "tsx --watch src/index.ts",
    "test": "tsx src/test.ts",
    "db:migrate": "drizzle-kit generate:pg",
    "db:studio": "drizzle-kit studio",
    "db:push": "tsx db/migrate.ts",
    "db:drop": "drizzle-kit drop --config=drizzle.config.ts"
  }
Was this page helpful?