An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
go-sqlite3
Sponsors
This project is proudly sponsored by:
Latest stable version is v1.14 or later, not v2.
Description
A sqlite3 driver that conforms to the built-in database/sql interface.
Supported Golang version: See .github/workflows/go.yaml.
This package follows the official Golang Release Policy.
Overview
go-sqlite3
Description
Overview
Installation
API Reference
Connection String
DSN Examples
Features
Usage
Feature / Extension List
Compilation
Android
ARM
Cross Compile
Compiling
Linux
Alpine
Fedora
Ubuntu
macOS
Windows
Errors
User Authentication
Compile
Usage
Create protected database
Password Encoding
Available Encoders
Restrictions
Support
User Management
SQL
Examples
*SQLiteConn
Attached database
Extensions
Spatialite
FAQ
License
Author
Installation
This package can be installed with the go get command:
go get github.com/mattn/go-sqlite3
go-sqlite3 is cgo package.
If you want to build your app using go-sqlite3, you need gcc.
Important: because this is a CGO enabled package, you are required to set the environment variable CGO_ENABLED=1 and have a gcc compiler present within your path.
API Reference
API documentation can be found here.
Examples can be found under the examples directory.
Connection String
When creating a new SQLite database or connection to an existing one, with the file name additional options can be given.
This is also known as a DSN (Data Source Name) string.
Options are append after the filename of the SQLite database.
The database filename and options are separated by an ? (Question Mark).
Options should be URL-encoded (see url.QueryEscape).
This also applies when using an in-memory database instead of a file.
Options can be given using the following format: KEYWORD=VALUE and multiple options can be combined with the & ampersand.
This library supports DSN options of SQLite itself and provides additional options.
Boolean values can be one of:
0 no false off
1 yes true on
Name
Key
Value(s)
Description
UA - Create
_auth
-
Create User Authentication, for more information see User Authentication
UA - Username
_auth_user
string
Username for User Authentication, for more information see User Authentication
UA - Password
_auth_pass
string
Password for User Authentication, for more information see User Authentication
UA - Crypt
_auth_crypt
SHA1SSHA1SHA256SSHA256SHA384SSHA384SHA512SSHA512
Password encoder to use for User Authentication, for more information see User Authentication
UA - Salt
_auth_salt
string
Salt to use if the configure password encoder requires a salt, for User Authentication, for more information see User Authentication
Auto Vacuum
_auto_vacuum | _vacuum
0 | none1 | full2 | incremental
For more information see PRAGMA auto_vacuum
Busy Timeout
_busy_timeout | _timeout
int
Specify value for sqlite3_busy_timeout. For more information see PRAGMA busy_timeout
Case Sensitive LIKE
_case_sensitive_like | _cslike
boolean
For more information see PRAGMA case_sensitive_like
Defer Foreign Keys
_defer_foreign_keys | _defer_fk
boolean
For more information see PRAGMA defer_foreign_keys
Foreign Keys
_foreign_keys | _fk
boolean
For more information see PRAGMA foreign_keys
Ignore CHECK Constraints
_ignore_check_constraints
boolean
For more information see PRAGMA ignore_check_constraints
Immutable
immutable
boolean
For more information see Immutable
Journal Mode
_journal_mode | _journal
DELETETRUNCATEPERSISTMEMORYWALOFF
For more information see PRAGMA journal_mode
Locking Mode
_locking_mode | _locking
NORMALEXCLUSIVE
For more information see PRAGMA locking_mode
Mode
mode
rorwrwcmemory
Access Mode of the database. For more information see SQLite Open
Mutex Locking
_mutex
nofull
Specify mutex mode.
Query Only
_query_only
boolean
For more information see PRAGMA query_only
Recursive Triggers
_recursive_triggers | _rt
boolean
For more information see PRAGMA recursive_triggers
Secure Delete
_secure_delete
boolean | FAST
For more information see PRAGMA secure_delete
Shared-Cache Mode
cache
sharedprivate
Set cache mode for more information see sqlite.org
Synchronous
_synchronous | _sync
0 | OFF1 | NORMAL2 | FULL3 | EXTRA
For more information see PRAGMA synchronous
Time Zone Location
_loc
auto
Specify location of time format.
Transaction Lock
_txlock
immediatedeferredexclusive
Specify locking behavior for transactions.
Writable Schema
_writable_schema
Boolean
When this pragma is on, the SQLITE_MASTER tables in which database can be changed using ordinary UPDATE, INSERT, and DELETE statements. Warning: misuse of this pragma can easily result in a corrupt database file.
Cache Size
_cache_size
int
Maximum cache size; default is 2000K (2M). See PRAGMA cache_size
Statement Cache Size
_stmt_cache_size
int
Maximum number of prepared statements cached per connection; default is 0 (disabled). Note that sql.DB is a connection pool, so each connection maintains its own independent cache.
DSN Examples
file:test.db?cache=shared&mode=memory
Features
This package allows additional configuration of features available within SQLite3 to be enabled or disabled by golang build constraints also known as build tags.
Click here for more information about build tags / constraints.
Usage
If you wish to build this library with additional extensions / features, use the following command:
go build -tags "<FEATURE>"
For available features, see the extension list.
When using multiple build tags, all the different tags should be space delimited.
Example:
go build -tags "icu json1 fts5 secure_delete"
Feature / Extension List
Extension
Build Tag
Description
Additional Statistics
sqlite_stat4
This option adds additional logic to the ANALYZE command and to the query planner that can help SQLite to chose a better query plan under certain situations. The ANALYZE command is enhanced to collect histogram data from all columns of every index and store that data in the sqlite_stat4 table.
Read the full README on GitHub