Drizzle ORM: Migration error
Drizzle ORMのマイグレーションでエラーが発生した場合の解決策
概要
Drizzle ORMでスキーマのマイグレーション生成や適用に失敗する場合のエラーです。
エラーメッセージ
``` Error: Can’t find meta folder in migrations ```
原因
- 設定ファイルの誤り: drizzle.config.tsの設定
- スキーマのエクスポート漏れ: export忘れ
- 接続情報の誤り: DATABASE_URLの問題
- マイグレーションフォルダの欠落: 初期化されていない
解決策
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 の他のエラー
この記事は役に立ちましたか?