command line 에서 빈 sqlite 데이터베이스 파일 만들기

TL;DR

다음 명령으로 my-database.sqlite 라는 empty database file 을 생성할 수 있습니다.

sqlite3 my-database.sqlite "VACUUM;"

개요

제가 즐겨 쓰는 framework 인 laravel 은 Database layer 가 추상화되어 있어서 설정으로 사용하는 DB 를 간단하게 변경할 수 있습니다.

그래서 desktop 에서 간단하게 개발 환경을 구성할 때 별도의 DBMS 를 설치하지 않고 가볍고 빠른 local DBMS 인 sqlite3 를 사용하고는 합니다.


예전에는 sqlite3 의 database file 을 touch 명령어로 간단하게 생성하고 사용할 수 있었습니다.

touch my-database.sqlite

최근 버전의 sqlite3 는 database file format 이 변경되었는지 touch 로 생성한 빈 파일을 사용하려면 다음 에러가 발생합니다.

SQLSTATE[HY000]: General error: 26 file is not a database (SQL: select * from sqlite_master where type = 'table' and name = migrations)


그래서 sqlite3 를 실행해서 쓸모없는 테이블을 하나 생성하고 저장해서 사용했는데 찾아 보니 커맨드에서 다음 명령으로 한 번에 빈 database file 생성이 가능합니다.

sqlite3 my-database.sqlite "VACUUM;"


만약 laravel 을 사용한다면 다음 경로에 빈 sqlite3 db file 을 생성해 주면 됩니다.

sqlite3 database/database.sqlite "VACUUM;"


같이 보기

Ref