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'];
$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 {
$connection = new self(
$dns,
self::$details['user'],
self::$details['pass'],
[
\PDO::ATTR_PERSISTENT => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_TIMEOUT => 2,
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'',
]
$pdoOptions
);
} catch (\PDOException $ex) {
$connection = false;

View file

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