MeWrite Docs

Drizzle ORM: Migration error

Drizzle ORMのマイグレーションでエラーが発生した場合の解決策

概要

Drizzle ORMでスキーマのマイグレーション生成や適用に失敗する場合のエラーです。

エラーメッセージ

``` Error: Can’t find meta folder in migrations ```

原因

  1. 設定ファイルの誤り: drizzle.config.tsの設定
  2. スキーマのエクスポート漏れ: export忘れ
  3. 接続情報の誤り: DATABASE_URLの問題
  4. マイグレーションフォルダの欠落: 初期化されていない

解決策

1. drizzle.config.tsを確認

```typescript // drizzle.config.ts import type { Config } from ‘drizzle-kit’;

export default { schema: ‘./src/db/schema.ts’, out: ‘./drizzle’, driver: ‘pg’, dbCredentials: { connectionString: process.env.DATABASE_URL!, }, } satisfies Config; ```

2. スキーマを正しくエクスポート

```typescript // src/db/schema.ts import { pgTable, serial, text, timestamp } from ‘drizzle-orm/pg-core’;

export const users = pgTable(‘users’, { id: serial(‘id’).primaryKey(), name: text(’name’).notNull(), email: text(’email’).notNull().unique(), createdAt: timestamp(‘created_at’).defaultNow(), });

// 全テーブルをエクスポート export const schema = { users }; ```

3. マイグレーションを生成

```bash

マイグレーションを生成

npx drizzle-kit generate:pg

または push(開発環境向け)

npx drizzle-kit push:pg ```

4. マイグレーションを適用

```typescript // src/db/migrate.ts import { drizzle } from ‘drizzle-orm/postgres-js’; import { migrate } from ‘drizzle-orm/postgres-js/migrator’; import postgres from ‘postgres’;

const sql = postgres(process.env.DATABASE_URL!, { max: 1 }); const db = drizzle(sql);

async function main() { await migrate(db, { migrationsFolder: ‘./drizzle’ }); await sql.end(); }

main(); ```

5. 既存のマイグレーションを確認

```bash

マイグレーション状態を確認

npx drizzle-kit check:pg

スキーマの差分を確認

npx drizzle-kit introspect:pg ```

よくある間違い

  • drizzle.config.tsをdrizzle.config.jsと命名
  • スキーマファイルのパスが間違っている
  • CONNECTION_STRINGとDATABASE_URLの混同

関連エラー

関連エラー

Database の他のエラー

最終更新: 2025-12-11