{"record":{"id":"d7d5bfd923ac809c","repo":"sipeed/picoclaw","slug":"open-crypto-database-w","errorCode":null,"errorMessage":"open crypto database: %w","messagePattern":"open crypto database: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/channels/matrix/matrix.go","lineNumber":339,"sourceCode":"\tlogger.InfoC(\"matrix\", \"Matrix channel stopped\")\n\treturn nil\n}\n\nfunc (c *MatrixChannel) initCrypto(ctx context.Context) error {\n\tlogger.InfoC(\"matrix\", \"Initializing crypto helper\")\n\n\t// Ensure the crypto database directory exists\n\tif err := os.MkdirAll(c.cryptoDbPath, 0o700); err != nil {\n\t\treturn fmt.Errorf(\"create crypto database directory: %w\", err)\n\t}\n\n\t// Create database with sqlite driver (modernc.org/sqlite)\n\tdbPath := filepath.Join(c.cryptoDbPath, dbName)\n\tconnStr := \"file:\" + dbPath + \"?_foreign_keys=on\"\n\n\tdb, err := sql.Open(sqliteDriver, connStr)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"open crypto database: %w\", err)\n\t}\n\tdb.SetMaxOpenConns(1)\n\tdb.SetMaxIdleConns(1)\n\n\t// Execute PRAGMA statements\n\t// This is equivalent to the \"sqlite3-fk-wal\" dialect used by cryptohelper\n\tpragmaStmts := []string{\n\t\t\"PRAGMA foreign_keys = ON\",\n\t\t\"PRAGMA journal_mode = WAL\",\n\t\t\"PRAGMA synchronous = NORMAL\",\n\t\t\"PRAGMA busy_timeout = 5000\",\n\t}\n\tfor _, pragma := range pragmaStmts {\n\t\tif _, err = db.ExecContext(ctx, pragma); err != nil {\n\t\t\t_ = db.Close()\n\t\t\treturn fmt.Errorf(\"execute %s: %w\", pragma, err)\n\t\t}\n\t}","sourceCodeStart":321,"sourceCodeEnd":357,"githubUrl":"https://github.com/sipeed/picoclaw/blob/49183d7e8daed0dba89ddbb6fcb60089401d9680/pkg/channels/matrix/matrix.go#L321-L357","documentation":"Error \"open crypto database: %w\" thrown in sipeed/picoclaw.","triggerScenarios":"Thrown at pkg/channels/matrix/matrix.go:339 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"49183d7e8daed0dba89ddbb6fcb60089401d9680","analyzedAt":"2026-08-15T21:55:41.315Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}