1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DuckDBが急に使えなくなったときの対処法

Last updated at Posted at 2024-10-19

目的

生成AIでテーブルデータを扱うのにDuckDB(MotherDuck、ローカルDuckDB両方)を愛用しているのですが、エラーが出て急に使えなくなりました。

実行したコード

import duckdb
from langchain.sql_database import SQLDatabase

# LangChainモデルでDuckDBを使えるようにする
db = SQLDatabase.from_uri("duckdb:///drive/MyDrive/Colab Notebooks/duckdb.db") # GoogleDrive上の、ローカルDuckDBファイルを参照しています。
db.get_usable_table_names()

エラーメッセージ

ProgrammingError: (duckdb.duckdb.CatalogException) Catalog Error: Type with name REGCLASS does not exist!
[SQL: SELECT pg_catalog.pg_class.relname, pg_catalog.pg_description.description 
FROM pg_catalog.pg_class LEFT OUTER JOIN pg_catalog.pg_description ON pg_catalog.pg_class.oid = pg_catalog.pg_description.objoid AND pg_catalog.pg_description.objsubid = $1 AND pg_catalog.pg_description.classoid = CAST($2 AS REGCLASS) JOIN pg_catalog.pg_namespace ON pg_catalog.pg_namespace.oid = pg_catalog.pg_class.relnamespace 
WHERE pg_catalog.pg_class.relkind = ANY (ARRAY[$3, $4, $5]) AND pg_catalog.pg_table_is_visible(pg_catalog.pg_class.oid) AND pg_catalog.pg_namespace.nspname != $6 AND pg_catalog.pg_class.relname IN ($7)]
[parameters: (0, 'pg_catalog.pg_class', 'r', 'p', 'f', 'pg_catalog', 'transaction')]
(Background on this error at: https://sqlalche.me/e/20/f405)

スクリーンショット 2024-10-19 120258.png

対処方法

これまで起きたことがないエラーだったので、焦ったのですがエラーメッセージで出ている「REGCLASS」というタイプがないことを解消すれば、解決しました。

どちらも、わかってしまえば簡単な解決策なのですが、最初対策が分からずに30分くらい迷ってしまったので、備忘録もかねて記事化しておきました。

ローカルDuckDBの場合

ローカルのDuckDBをduckdb.connectで接続してから、「CREATE TYPE REGCLASS AS VARCHAR;」を実行

import duckdb
conn = duckdb.connect('/content/drive/MyDrive/Colab Notebooks/duckdb.db')

cursor  = conn.cursor()

cursor.execute(
    "CREATE TYPE REGCLASS AS VARCHAR;"
)

MotherDuckの場合

  1. (MotherDuck)[https://app.motherduck.com/]にアクセスして、Notebookを新規作成
  2. エラーになったデータベース(ここでは、mydb)を選んで、「CREATE TYPE REGCLASS AS VARCHAR;」として実行

image.png

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?