Companion code for SQLite Koans
This project configures sqlite3
for real world apps:
✅ Foreign Keys
✅ Read as you Write
✅ Write-Ahead Logging
✅ UTF-8
encoding
✅ graceful table lock error handling via PRAGMA busy_timeout;
✅ No empty or null
primary keys
✅ WAL backup via checkpointing
The repo has a commit covering each koan that we tie to a particular PRAGMA
config flag:
Ubuntu apt version is outdated on both Ubuntu 20 and 22
1. Install Build Tools
gcc
is required forCGO
bindings used bymattn/go-sqlite3
sudo apt-get install build-essential gcc
1a. confirm gcc
installation
gcc --version
2. Install latest SQLite snapshot (~v3.40.1 minimum)
export SQLITE_SNAPSHOT=202301131932
wget "https://www.sqlite.org/snapshot/sqlite-snapshot-${SQLITE_SNAPSHOT}.tar.gz"
tar -xzvf sqlite-snapshot-$SQLITE_SNAPSHOT.tar.gz
cd sqlite-snapshot-$SQLITE_SNAPSHOT
./configure
make
sudo make install
3. Verify sqlite3
install
❯ sqlite3
SQLite version 3.40.2 2023-01-13 19:32:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>