2011-12-03 16:57:40 +04:00
go-sqlite3
==========
2017-03-05 15:05:35 +03:00
[![GoDoc Reference ](https://godoc.org/github.com/mattn/go-sqlite3?status.svg )](http://godoc.org/github.com/mattn/go-sqlite3)
2016-01-29 04:28:43 +03:00
[![Build Status ](https://travis-ci.org/mattn/go-sqlite3.svg?branch=master )](https://travis-ci.org/mattn/go-sqlite3)
[![Coverage Status ](https://coveralls.io/repos/mattn/go-sqlite3/badge.svg?branch=master )](https://coveralls.io/r/mattn/go-sqlite3?branch=master)
2017-03-05 15:05:35 +03:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/mattn/go-sqlite3 )](https://goreportcard.com/report/github.com/mattn/go-sqlite3)
2013-05-11 17:01:06 +04:00
2013-09-28 22:55:26 +04:00
Description
2011-12-03 16:57:40 +04:00
-----------
2012-07-09 03:45:22 +04:00
sqlite3 driver conforming to the built-in database/sql interface
2011-12-03 16:57:40 +04:00
2013-09-28 22:55:26 +04:00
Installation
2012-03-29 07:46:32 +04:00
------------
2013-09-03 16:48:14 +04:00
This package can be installed with the go get command:
2012-07-09 03:45:22 +04:00
go get github.com/mattn/go-sqlite3
2017-05-29 16:57:51 +03:00
2015-10-31 09:59:28 +03:00
_go-sqlite3_ is *cgo* package.
If you want to build your app using go-sqlite3, you need gcc.
2017-11-30 23:35:32 +03:00
However, after you have built and installed _go-sqlite3_ with `go install github.com/mattn/go-sqlite3` (which requires gcc), you can build your app without relying on gcc in future.
2017-05-29 16:57:51 +03:00
2013-09-28 22:55:26 +04:00
Documentation
-------------
API documentation can be found here: http://godoc.org/github.com/mattn/go-sqlite3
Examples can be found under the `./_example` directory
2012-03-29 07:48:11 +04:00
2013-02-13 13:27:35 +04:00
FAQ
---
2015-06-30 02:57:28 +03:00
* Want to build go-sqlite3 with libsqlite3 on my linux.
Use `go build --tags "libsqlite3 linux"`
2016-04-18 15:19:08 +03:00
* Want to build go-sqlite3 with libsqlite3 on OS X.
Install sqlite3 from homebrew: `brew install sqlite3`
2016-04-22 16:13:07 +03:00
2016-04-18 15:19:08 +03:00
Use `go build --tags "libsqlite3 darwin"`
2015-08-20 03:02:59 +03:00
* Want to build go-sqlite3 with icu extension.
Use `go build --tags "icu"`
2017-03-02 00:15:45 +03:00
Available extensions: `json1` , `fts5` , `icu`
2013-02-13 13:38:12 +04:00
* Can't build go-sqlite3 on windows 64bit.
2013-02-13 13:27:35 +04:00
2017-05-29 16:57:51 +03:00
> Probably, you are using go 1.0, go1.0 has a problem when it comes to compiling/linking on windows 64bit.
2017-02-07 10:54:49 +03:00
> See: [#27](https://github.com/mattn/go-sqlite3/issues/27)
2013-02-13 13:27:35 +04:00
2013-02-13 13:38:12 +04:00
* Getting insert error while query is opened.
2013-02-13 13:27:35 +04:00
2013-06-18 15:40:15 +04:00
> You can pass some arguments into the connection string, for example, a URI.
2017-02-07 10:54:49 +03:00
> See: [#39](https://github.com/mattn/go-sqlite3/issues/39)
2013-02-13 13:27:35 +04:00
2016-02-23 09:20:57 +03:00
* Do you want to cross compile? mingw on Linux or Mac?
2014-11-14 13:49:22 +03:00
2017-02-07 10:54:49 +03:00
> See: [#106](https://github.com/mattn/go-sqlite3/issues/106)
2014-11-14 13:50:39 +03:00
> See also: http://www.limitlessfx.com/cross-compile-golang-app-for-windows-from-linux.html
2014-11-14 13:49:22 +03:00
2015-03-04 19:19:33 +03:00
* Want to get time.Time with current locale
2017-08-27 08:00:09 +03:00
Use `_loc=auto` in SQLite3 filename schema like `file:foo.db?_loc=auto` .
2015-03-04 19:19:33 +03:00
2017-05-29 16:57:51 +03:00
* Can I use this in multiple routines concurrently?
2016-11-07 10:16:17 +03:00
2017-02-07 10:54:49 +03:00
Yes for readonly. But, No for writable. See [#50 ](https://github.com/mattn/go-sqlite3/issues/50 ), [#51 ](https://github.com/mattn/go-sqlite3/issues/51 ), [#209 ](https://github.com/mattn/go-sqlite3/issues/209 ).
2016-11-07 10:16:17 +03:00
2017-05-29 16:57:51 +03:00
* Why is it racy if I use a `sql.Open("sqlite3", ":memory:")` database?
2017-01-27 00:55:07 +03:00
Each connection to :memory: opens a brand new in-memory sql database, so if
the stdlib's sql engine happens to open another connection and you've only
specified ":memory:", that connection will see a brand new database. A
workaround is to use "file::memory:?mode=memory& cache=shared". Every
connection to this string will point to the same in-memory database. See
2017-02-07 10:54:49 +03:00
[#204 ](https://github.com/mattn/go-sqlite3/issues/204 ) for more info.
2017-01-27 00:55:07 +03:00
2013-09-28 22:55:26 +04:00
License
2011-12-03 16:57:40 +04:00
-------
2012-03-29 07:46:32 +04:00
MIT: http://mattn.mit-license.org/2012
2014-08-18 12:05:50 +04:00
2015-03-11 22:18:10 +03:00
sqlite3-binding.c, sqlite3-binding.h, sqlite3ext.h
The -binding suffix was added to avoid build failures under gccgo.
2014-08-18 12:05:50 +04:00
2016-02-23 09:20:57 +03:00
In this repository, those files are an amalgamation of code that was copied from SQLite3. The license of that code is the same as the license of SQLite3.
2014-08-18 12:05:50 +04:00
Author
------
Yasuhiro Matsumoto (a.k.a mattn)