go-sqlcipher/README.md

134 lines
4.8 KiB
Markdown
Raw Normal View History

2015-04-01 17:48:28 +03:00
go-sqlcipher
2011-12-03 16:57:40 +04:00
==========
2015-04-06 18:57:05 +03:00
[![wercker status](https://app.wercker.com/status/644cebafbb8dc7be796f0d45578a9a12/m "wercker status")](https://app.wercker.com/project/bykey/644cebafbb8dc7be796f0d45578a9a12)
2011-12-03 16:57:40 +04:00
2015-04-01 17:49:37 +03:00
SQLCipher driver conforming to the built-in database/sql interface and using the latest sqlite3 code.
2015-04-01 17:48:28 +03:00
2011-12-03 16:57:40 +04:00
2015-04-01 17:48:28 +03:00
which is
2018-05-23 18:43:09 +03:00
`3.20.1`
2015-04-01 17:48:28 +03:00
Working with sqlcipher version which is
2018-05-23 18:43:09 +03:00
`3.4.2`
2015-04-01 17:48:28 +03:00
It's wrapper with
* [go-sqlite3](https://github.com/mattn/go-sqlite3) sqlite3 driver for go that using database/sql.
* [SQLCipher](https://github.com/sqlcipher/sqlcipher) SQLCipher is an SQLite extension that provides 256 bit AES encryption of database files.
* Using [openssl](https://github.com/openssl/openssl) as the 256 bit AES encryption.
*Have't build test in a windows machine or linux machine*
**Working in my macbook-air**
```
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix
OpenSSL 0.9.8zd 8 Jan 2015
built on: Mar 9 2015
platform: darwin64-x86_64-llvm
options: bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) blowfish(idx)
compiler: -arch x86_64 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -O3 -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DMD32_REG_T=int -DOPENSSL_NO_IDEA -DOPENSSL_PIC -DOPENSSL_THREADS -DZLIB -mmacosx-version-min=10.6
OPENSSLDIR: "/System/Library/OpenSSL"
```
2011-12-03 16:57:40 +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
2015-04-01 17:48:28 +03:00
go get github.com/xeodou/go-sqlcipher
2016-07-07 10:43:10 +03:00
_go-sqlcipher_ is *cgo* package.
If you want to build your app using go-sqlcipher, you need gcc.
However, if you install _go-sqlcipher_ with `go install github.com/xeodou/go-sqlcipher`, you don't need gcc to build your app anymore.
Documentation
-------------
2015-04-01 17:48:28 +03:00
API documentation can be found here: http://godoc.org/github.com/xeodou/go-sqlcipher
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-04-02 06:03:09 +03:00
The golang code is copy from [go-sqlite3](https://github.com/mattn/go-sqlite3)
2016-07-07 10:43:10 +03:00
If you have some issue, maybe you can find from https://github.com/mattn/go-sqlite3/issues
2015-04-01 17:51:38 +03:00
2015-04-01 17:48:28 +03:00
Here is some help from go-sqlite3 project.
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
2015-04-01 17:48:28 +03:00
> Probably, you are using go 1.0, go1.0 has a problem when it comes to compiling/linking on windows 64bit.
2013-02-13 13:38:12 +04:00
> See: 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
* Can I use this in multiple routines concurrently?
2016-11-07 10:16:17 +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), [#274](https://github.com/mattn/go-sqlite3/issues/274).
2016-11-07 10:16:17 +03:00
* Why is it racy if I use a `sql.Open("sqlite3", ":memory:")` database?
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.
2015-03-04 19:19:33 +03:00
2015-04-01 17:48:28 +03:00
* Print some waring messages like `warning: 'RAND_add' is deprecated: first deprecated in OS X 10.7`
2015-04-01 17:52:22 +03:00
You can ignore these messages.
2015-04-01 17:48:28 +03:00
License
2011-12-03 16:57:40 +04:00
-------
2015-04-01 17:48:28 +03:00
MIT:
sqlite3-binding.c, sqlite3-binding.h, sqlite3ext.h
The -binding suffix was added to avoid build failures under gccgo.
2015-04-01 17:48:28 +03:00
In this repository, those files are amalgamation code that copied from SQLCipher. The license of those codes are depend on the license of SQLCipher.
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.
2016-07-07 10:43:10 +03:00
Original repository https://github.com/mattn/go-sqlite3 is under MIT.
Author
------
2015-04-01 17:48:28 +03:00
[xeodou](https://xeodou.me)