defaultDBURL kept the empty host only when state_dir started with //, but SQLite reads the path written into the URL, state_dir followed by /state.sqlite3. For a state_dir of / that path is //state.sqlite3, the URL started file:// and SQLite read state.sqlite3 as a host, so pixa failed to start. The decision now looks at that path: a state_dir of / gives file:////state.sqlite3. Every other state_dir gives the same URL as before. Model: opus-5-5
This commit is contained in:
@@ -359,14 +359,18 @@ func newFromSmartConfig(sc *smartconfig.Config) (*Config, error) {
|
||||
// the directory name, which SQLite decodes back, so the URL names exactly
|
||||
// this file. OmitHost writes file:/var/lib/pixa/... instead of
|
||||
// file:///var/lib/pixa/..., and keeps a relative stateDir from being read
|
||||
// as a host name. A stateDir starting with // keeps the empty host, so the
|
||||
// URL starts file://// and SQLite does not read the first directory name
|
||||
// as a host.
|
||||
// as a host name. The path written into the URL is stateDir followed by
|
||||
// /state.sqlite3; when it starts with //, as it does for a stateDir of /
|
||||
// or one starting with //, the empty host is kept, so the URL starts
|
||||
// file://// and SQLite does not read the first name in the path as a
|
||||
// host.
|
||||
func defaultDBURL(stateDir string) string {
|
||||
dbPath := stateDir + "/state.sqlite3"
|
||||
|
||||
dbURL := url.URL{
|
||||
Scheme: "file",
|
||||
OmitHost: !strings.HasPrefix(stateDir, "//"),
|
||||
Path: stateDir + "/state.sqlite3",
|
||||
OmitHost: !strings.HasPrefix(dbPath, "//"),
|
||||
Path: dbPath,
|
||||
RawQuery: "_pragma=journal_mode(WAL)",
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user