diff options
| author | 2020-05-29 23:55:53 +0200 | |
|---|---|---|
| committer | 2020-05-29 23:55:53 +0200 | |
| commit | fe1e02dab9581d9ba3c9d8371e85072a959c8bce (patch) | |
| tree | abad300f5ea5269e9f6dd915be962feca4847832 | |
| parent | 19b94b648bf9e8dbc79ccc1765a295660a85e1f8 (diff) | |
Fix PostgreSQL database auto-create with limited rights (#3013)
* Fix PostgreSQL database auto-create with limited rights
#fix https://github.com/FreshRSS/FreshRSS/issues/3009
Install would fail if the user is not even allowed to connect to the default `postgres` database.
* Confused by custom Minz_PDOConnectionException
| -rw-r--r-- | app/Models/DatabaseDAO.php | 4 | ||||
| -rw-r--r-- | lib/lib_install.php | 14 |
2 files changed, 12 insertions, 6 deletions
diff --git a/app/Models/DatabaseDAO.php b/app/Models/DatabaseDAO.php index cfb150ab1..2e0ee25a0 100644 --- a/app/Models/DatabaseDAO.php +++ b/app/Models/DatabaseDAO.php @@ -21,7 +21,7 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo { try { $sql = sprintf($SQL_CREATE_DB, empty($db['base']) ? '' : $db['base']); return $this->pdo->exec($sql) !== false; - } catch (PDOException $e) { + } catch (Exception $e) { $_SESSION['bd_error'] = $e->getMessage(); syslog(LOG_DEBUG, __method__ . ' warning: ' . $e->getMessage()); return false; @@ -34,7 +34,7 @@ class FreshRSS_DatabaseDAO extends Minz_ModelPdo { $stm = $this->pdo->query($sql); $res = $stm->fetchAll(PDO::FETCH_COLUMN, 0); return $res != false; - } catch (PDOException $e) { + } catch (Exception $e) { $_SESSION['bd_error'] = $e->getMessage(); syslog(LOG_DEBUG, __method__ . ' warning: ' . $e->getMessage()); return false; diff --git a/lib/lib_install.php b/lib/lib_install.php index 29dbc7b67..411938059 100644 --- a/lib/lib_install.php +++ b/lib/lib_install.php @@ -94,13 +94,19 @@ function initDb() { //For first connection, use default database for PostgreSQL, empty database for MySQL / MariaDB: $db['base'] = $db['type'] === 'pgsql' ? 'postgres' : ''; $conf->db = $db; - //First connection without database name to create the database - $databaseDAO = FreshRSS_Factory::createDatabaseDAO(); + try { + //First connection without database name to create the database + $databaseDAO = FreshRSS_Factory::createDatabaseDAO(); + } catch (Exception $ex) { + $databaseDAO = null; + } //Restore final database parameters for auto-creation and for future connections $db['base'] = $dbBase; $conf->db = $db; - //Perfom database auto-creation - $databaseDAO->create(); + if ($databaseDAO != null) { + //Perfom database auto-creation + $databaseDAO->create(); + } } //New connection with the database name |
