0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Drizzle ORM で特定のテーブルを管理対象外にする

Posted at

環境

以下の環境で確認しました。

  • drizzle-orm: 0.38.4
  • drizzle-kit: 0.30.2

状況

特定のテーブルを Drizzle ORM の管理対象から外す方法を調べました。

具体的には PostgreSQL の pgvector を利用してる状況で、LangChain の PGVector が作成した langchain_pg_collection テーブルと langchain_pg_embedding テーブルが、Drizzle ORM の管理してるデータベースの同じスキーマに存在していました。

その状況で npm drizzle-kit push を実行すると、Drizzle ORM の schema ファイルに上記テーブルが存在しないため、このテーブルを削除しようとします。

drizzle.config.ts の設定

drizzle.config.ts で、tablesFilter にテーブル名を指定する際、テーブル名の前に ! を付けることで、そのテーブルを Drizzle ORM の管理対象から除外することができます。

具体的には、以下のように設定します。

ワイルドカードを使用できるので langchain_pg_* とすることで、langchain_pg_collectionlangchain_pg_embedding を管理対象から外すこともできます。

drizzle.config.ts
import "dotenv/config";

import { defineConfig } from "drizzle-kit";

import { env } from "./src/env";

export default defineConfig({
  out: "./drizzle",
  schema: "./src/db/schema.ts",
  dialect: "postgresql",
  dbCredentials: {
    url: env.DATABASE_URL,
  },
  tablesFilter: ["!langchain_pg_collection", "!langchain_pg_embedding"],
});

drizzle の公式ドキュメントには、tablesFilter についての記載はありますが、! をつけることで、管理対象から外すことができるという記載は見つけられませんでした。

GitHub の Discussions で、この方法を書いている方がいましたので参考にしました。

そのほかの方法

Drizzle ORM 管理したくないテーブルは、別のスキーマに配置するという方法もあります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?