Comments (3)
So this issue is not so much an issue with this Go package so much as a subtlety to both PRAGMA foreign_keys = ON
and sqlitex.ExecScript
.
First understand that sqlitex.ExecScript
wraps the entire script in a SAVEPOINT.
You are running PRAGMA foreign_keys = ON
within this SAVEPOINT, and as such it will have no effect. This is a quirk of sqlite3 that is not well documented, but you can try it for yourself.
PRAGMA foreign_keys;
0
SAVEPOINT "a";
PRAGMA foreign_keys=ON;
PRAGMA foreign_keys;
0
COMMIT;
PRAGMA foreign_keys;
0
PRAGMA foreign_keys=ON;
PRAGMA foreign_keys;
1
You can address this by running PRAGMA foreign_keys = ON
using sqlitex.Exec
instead. You must do this once on each connection in the sqlitex.Pool
each time you start the program or open a new connection.
const PoolSize = 10
dbpool, err := sqlitex.Open("file:./sample.db", 0, PoolSize)
if err != nil {
panic(err)
}
for i := 0; i < PoolSize; i++ {
conn := dbpool.Get(nil)
err := sqlitex.Exec(conn, `PRAGMA foreign_keys = ON;`, nil)
if err != nil {
panic(err)
}
}
from sqlite.
Thanks for the explanation.
from sqlite.
Note that once you set the pragma on all connections in the pool, that setting will remain on the connections and so there is no need to run it again as you pull connections of the pool later.
from sqlite.
Related Issues (20)
- Further simplification of sqlitex.Pool.Get is not correct HOT 4
- Code generation? HOT 1
- doubled quoted key names as argument to json_object cause Prepare to fail HOT 1
- Multiple sqlitex.Pools giving off by 1 values HOT 2
- sqlitex.ExecScript fails to run scripts that include statements that cannot be executed within a transaction HOT 2
- API to retrieve column blob into slice of arbitrary length HOT 2
- BindBytes stores empty blobs as NULL HOT 2
- Pool.Close leaves behind WAL files HOT 8
- The state of the project. HOT 8
- No way to write blob in custom function
- Compile Time error HOT 5
- Compilation warning about memcpy with gcc 11.2.0 HOT 8
- sqlite.Stmt.Finalize should panic if called on a Stmt returned from Conn.Prepare HOT 5
- Running PRAGMA statments in sqlitex.OpenInit script
- sqlite3 math extension HOT 4
- Unable to build on Windows
- Build failure when using gcc 12. HOT 1
- ExecScript and Save panic on corrupt database
- sqlitex.ExecTransient and sqlitex.Exec not executing statements
- Support sqlite3_db_cacheflush HOT 5
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 sqlite.