diff options
author | drh <> | 2023-05-08 13:47:38 +0000 |
---|---|---|
committer | drh <> | 2023-05-08 13:47:38 +0000 |
commit | bbd0ae2e87a93805482a83df1c9399d2b52ad74f (patch) | |
tree | 19a977a95104abdef9b37ada5dbc9c0338494775 /src | |
parent | addc7e0e5bb1e725df6a517968abaea79a246242 (diff) | |
download | sqlite-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.in | 18 |
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); |