-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Config
Gert-Jan Timmer edited this page Jul 20, 2018
·
1 revision
Go: 1.10+ add additional functionality for configuring drivers.
This can be achieved through by either creating a Config
and using it as a driver.DriverContext
or convert the Config
into a DSN.
type Config struct {
// Database
Database string
// Mode of the SQLite database
Mode Mode
// CacheMode of the SQLite Connection
Cache CacheMode
// Mutex flag SQLITE_OPEN_MUTEX_NO, SQLITE_OPEN_MUTEX_FULL
// Defaults to SQLITE_OPEN_MUTEX_FULL
Mutex Mutex
// The immutable parameter is a boolean query parameter that indicates
// that the database file is stored on read-only media.
// When immutable is set, SQLite assumes that the database file
// cannot be changed, even by a process with higher privilege,
// and so the database is opened read-only and all locking and
// change detection is disabled.
//
// Caution: Setting the immutable property on a database file
// that does in fact change can result in incorrect query results
// and/or SQLITE_CORRUPT errors.
Immutable bool
// TimeZone location
TimeZone *time.Location
// TransactionLock behaviour
TransactionLock TxLock
// LockingMode behaviour
LockingMode LockingMode
// Authentication holds the UserAuth configuration
Authentication *Auth
// AutoVacuum sets the auto vacuum status of the database
// Defaults to NONE
AutoVacuum AutoVacuum
// BusyTimeout defines the time a connection will wait when the
// connection is BUSY and locked by an other connection.
// BusyTimeout is defined in milliseconds
BusyTimeout time.Duration
// CaseSensitiveLike controls the behaviour of the LIKE operator.
// Default or disabled the LIKE operation is case-insensitive.
// When enabling this options behaviour of LIKE will become case-sensitive.
CaseSensitiveLike bool
// DeferForeignKeys when enabled will cause the enforcement
// of all foreign key constraints is delayed until
// the outermost transaction is committed.
// The defer_foreign_keys pragma defaults to false
// so that foreign key constraints are only deferred
// if they are created as "DEFERRABLE INITIALLY DEFERRED".
// The defer_foreign_keys pragma is automatically switched off
// at each COMMIT or ROLLBACK.
// Hence, the defer_foreign_keys pragma must be separately
// enabled for each transaction.
// This pragma is only meaningful if foreign key
// constraints are enabled, of course.
DeferForeignKeys bool
// ForeignKeyConstraints enable or disable the
// enforcement of foreign key constraints.
ForeignKeyConstraints bool
// IgnoreCheckConstraints enables or disables the
// enforcement of CHECK constraints.
// The default setting is off, meaning that CHECK constraints
// are enforced by default.
IgnoreCheckConstraints bool
// JournalMode sets the journal mode for databases associated
// with the current database connection.
JournalMode JournalMode
// QueryOnly prevents all changes to the database when set to true.
QueryOnly bool
// RecursiveTriggers enable or disable the recursive trigger capability.
RecursiveTriggers bool
// SecureDelete enables or disables or sets the secure deletion
// within the database.
SecureDelete SecureDelete
// Synchronous Mode of the database
Synchronous Synchronous
// WriteableSchema enables of disables the ability to using
// UPDATE, INSERT, DELETE
//
// Warning: misuse of this pragma can easily result in a corrupt database file.
WriteableSchema bool
// Extensions
Extensions []string
// ConnectHook
ConnectHook func(*SQLiteConn) error
}
// Auth holds the authentication configuration for the SQLite UserAuth module.
type Auth struct {
// Username for authentication
Username string
// Password for authentication
Password string
// Salt for encryption
Salt string
// CryptEncoder used for the password encryption
Encoder CryptEncoder
}
To create a new Config
with default values please use the NewConfig()
function.
import (
_ "github.com/mattn/go-sqlite3/driver"
)
cfg := sqlite3.NewConfig()
import (
_ "github.com/mattn/go-sqlite3/driver"
)
cfg := sqlite3.NewConfig()
cfg.Database = tempFilename
// OpenDB
db := sql.OpenDB(cfg)
import (
_ "github.com/mattn/go-sqlite3/driver"
)
cfg := sqlite3.NewConfig()
dsn := cfg.FormatDSN()