커맨드라인 트러블슈팅

커맨드라인 트러블슈팅 (Command Line)

DuckDB 커맨드라인 클라이언트를 쓰다 보면 특정 버전에서 만날 수 있는 알려진 문제(known issue)가 몇 가지 있어요. 이 페이지는 그 문제들과 해결 방법을 정리해 둔 거예요.

출처: 공식문서

v1.5.2에서 HTTPS 데이터베이스 열기

DuckDB v1.5.2에는 커맨드라인에서 HTTPS 데이터베이스를 바로 열 때 httpfs 확장 자동 로딩 과정에서 오류가 나는 알려진 문제가 있어요.

duckdb https://blobs.duckdb.org/data/tpch-sf1.db
Extension Autoloading Error:
An error occurred while trying to automatically install the required extension 'httpfs':
Initialization function "httpfs_duckdb_cpp_init" from file ".../.duckdb/extensions/v1.5.2/osx_arm64/httpfs.duckdb_extension" threw an exception:
"Schema with name main does not exist!"

이 문제를 우회하려면 URL 앞에 duckdb::를 붙이면 돼요.

duckdb duckdb:https://blobs.duckdb.org/data/tpch-sf1.db

v1.5.0에서 파이프로 넘긴 스크립트가 실행되지 않는 문제

Linux와 macOS에서 DuckDB v1.5.0에는 커맨드라인 클라이언트가 파이프로 넘긴 스크립트를 해석하지 못하는 알려진 문제가 있어요 (#21243).

문제를 재현해 볼게요. 먼저 test.sql 파일을 만들어요.

echo "SELECT 42 AS x;" > test.sql

이 파일을 DuckDB 1.5.0 CLI 클라이언트에 파이프로 넘기면 스크립트가 실행되지 않아요.

duckdb < test.sql
# does not run the script

해결 방법은 호출 끝에 | cat을 붙이는 거예요.

duckdb < test.sql | cat
┌───────┐
│   x   │
│ int32 │
├───────┤
│    42 │
└───────┘

파일에서 파이프로 넘기는 경우라면 -f 인자를 쓸 수도 있어요.

duckdb -f test.sql
┌───────┐
│   x   │
│ int32 │
├───────┤
│    42 │
└───────┘

더 알아보기 (Learn more)