Fixed PDO creation for PostgreSQL without pdo_mysql extension. Issue #73.

This commit is contained in:
Dmitry Khomutov 2017-05-29 18:50:18 +07:00
parent dd8c85a449
commit fd356a4dda
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
2 changed files with 26 additions and 18 deletions

View file

@ -75,18 +75,22 @@ class Database extends \PDO
} }
$dns .= ';dbname=' . self::$details['db']; $dns .= ';dbname=' . self::$details['db'];
$pdoOptions = [
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
];
if ('mysql' === self::$details['type']) {
$pdoOptions[\PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES 'UTF8'";
}
// Try to connect: // Try to connect:
try { try {
$connection = new self( $connection = new self(
$dns, $dns,
self::$details['user'], self::$details['user'],
self::$details['pass'], self::$details['pass'],
[ $pdoOptions
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'',
]
); );
} catch (\PDOException $ex) { } catch (\PDOException $ex) {
$connection = false; $connection = false;

View file

@ -411,23 +411,27 @@ class InstallCommand extends Command
*/ */
protected function verifyDatabaseDetails(array $db, OutputInterface $output) protected function verifyDatabaseDetails(array $db, OutputInterface $output)
{ {
try {
$dns = $db['type'] . ':host=' . $db['servers']['write'][0]['host']; $dns = $db['type'] . ':host=' . $db['servers']['write'][0]['host'];
if (isset($db['servers']['write'][0]['port'])) { if (isset($db['servers']['write'][0]['port'])) {
$dns .= ';port=' . (integer)$db['servers']['write'][0]['port']; $dns .= ';port=' . (integer)$db['servers']['write'][0]['port'];
} }
$dns .= ';dbname=' . $db['name']; $dns .= ';dbname=' . $db['name'];
$pdoOptions = [
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
];
if ('mysql' === $db['type']) {
$pdoOptions[\PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES 'UTF8'";
}
try {
$pdo = new PDO( $pdo = new PDO(
$dns, $dns,
$db['username'], $db['username'],
$db['password'], $db['password'],
[ $pdoOptions
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'',
]
); );
unset($pdo); unset($pdo);