aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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);