Comments (5)
I thought the same thing at first (you can even see discussion about that in an old version of the README). However, as pointed out in the last paragraph of this reddit comment, the SqliteConnection
is non-Sync
, so it should not be sharable amongst concurrent threads. I just tried to wrap a connection up in an Arc
and got exactly that as an error message:
rusqlite-example/src/main.rs:33:23: 33:31 error: the trait `core::kinds::Sync` is not implemented for the type `rusqlite::SqliteConnection`
rusqlite-example/src/main.rs:33 let shared_conn = Arc::new(conn);
This is not an area of Rust I'm particularly well-versed in, so please let me know if this is wrong!
from rusqlite.
You are right, the connection cannot be shared between threads. Creating multiple connections to the same database doesn't work very well though. It's throwing the following panic:
thread '<unnamed>' panicked at 'called 'Result::unwrap()' on an 'Err' value: SqliteError { code: 5, message: database is locked }'
The unwrap is not happening in my code btw..
from rusqlite.
It is fixed by adding ffi::sqlite3_busy_timeout(db, 1000 as c_int);
to the constructor of InnerSqliteConnection
. Don't know if one always should, or what is a sane default value though.
from rusqlite.
Ah, good catch. I copied the default value of 5 seconds from one of Go's popular sqlite wrappers (https://github.com/mattn/go-sqlite3/blob/master/sqlite3.go#L276).
from rusqlite.
Cheers! I'll close this issue then.
from rusqlite.
Related Issues (20)
- release the latest version HOT 4
- FromSql vs TryFrom / ToSql vs TryInto HOT 1
- `sqlite3_compileoption_used` and Rust `const fn`
- called `Result::unwrap()` on an `Err` value: SqliteFailure(Error { code: Unknown, extended_code: 1 }, Some("json_object() requires an even number of arguments")) HOT 2
- Apps using `winsqlite3` feature no longer builds HOT 5
- Question: Is there any way to use SQLite 3.45 with rusqlite 0.30.0? HOT 2
- Trait for abstracting over `Connection`/`Transaction`? HOT 3
- SqlInputError { error: Error { code: Unknown, extended_code: 1 }, msg: "unrecognized token: \"{\"" HOT 1
- Release 0.31.0 with SQLite 3.45? HOT 2
- Type issue on select with digits only in a "string" colums. HOT 2
- wasm32-wasi target fails on Apple M3
- How to get "returning *" from insert HOT 2
- Stale Connection Handler on Multi-Threaded Situation HOT 1
- sqlite3_snapshot iteration HOT 2
- Creating `Value::Blob` without necessarily allocating heap HOT 5
- Using rusqlite::vtab::VTabConnection::handle() HOT 4
- Add bindings for `sqlite3_trace_v2` API HOT 4
- iOS Linker Warning: SQLite was build for newer version than being linked HOT 2
- the first query is failure due to below error HOT 1
- Segmentation fault when writing encrypted database with vendored SQLCipher and OpenSSL on OpenBSD
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rusqlite.