aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2023-05-08 13:47:38 +0000
committerdrh <>2023-05-08 13:47:38 +0000
commitbbd0ae2e87a93805482a83df1c9399d2b52ad74f (patch)
tree19a977a95104abdef9b37ada5dbc9c0338494775 /src
parentaddc7e0e5bb1e725df6a517968abaea79a246242 (diff)
downloadsqlite-bbd0ae2e87a93805482a83df1c9399d2b52ad74f.tar.gz
sqlite-bbd0ae2e87a93805482a83df1c9399d2b52ad74f.zip
Improved error handling when ".open" fails in the CLI.
FossilOrigin-Name: 38544b11f0e19cc6c6f8230a89d28e36c7c3587481deaac6cedbf82338ca0d47
Diffstat (limited to 'src')
-rw-r--r--src/shell.c.in18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/shell.c.in b/src/shell.c.in
index bf804aca9..567752e9b 100644
--- a/src/shell.c.in
+++ b/src/shell.c.in
@@ -5380,11 +5380,21 @@ static void open_db(ShellState *p, int openFlags){
if( p->db==0 || SQLITE_OK!=sqlite3_errcode(p->db) ){
utf8_printf(stderr,"Error: unable to open database \"%s\": %s\n",
zDbFilename, sqlite3_errmsg(p->db));
- if( openFlags & OPEN_DB_KEEPALIVE ){
- sqlite3_open(":memory:", &p->db);
- return;
+ if( (openFlags & OPEN_DB_KEEPALIVE)==0 ){
+ exit(1);
+ }
+ sqlite3_close(p->db);
+ sqlite3_open(":memory:", &p->db);
+ if( p->db==0 || SQLITE_OK!=sqlite3_errcode(p->db) ){
+ utf8_printf(stderr,
+ "Also: unable to open substitute in-memory database.\n"
+ );
+ exit(1);
+ }else{
+ utf8_printf(stderr,
+ "Notice: using substitute in-memory database instead of \"%s\"\n",
+ zDbFilename);
}
- exit(1);
}
sqlite3_db_config(p->db, SQLITE_DBCONFIG_STMT_SCANSTATUS, (int)0, (int*)0);