public function execute() { $configLoader = $this->getConfigLoader(true); $dsId = $this->getCurrentDataSourceId(); $ds = $configLoader->getDataSource($dsId); $dsnParser = new DSNParser(); $dsn = $dsnParser->parse($ds['dsn']); $dbName = $dsn->getAttribute('dbname'); $dsn->removeAttribute('dbname'); $this->logger->debug("Connection DSN: " . $dsn); $pdo = new PDO($dsn, @$ds['user'], @$ds['pass'], @$ds['connection_options']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $q = new DropDatabaseQuery($dbName); $q->ifExists(); // Create query Driver object $queryDriver = PDODriverFactory::create($pdo); $sql = $q->toSql($queryDriver, new ArgumentArray()); $this->logger->info($sql); if ($pdo->query($sql) === false) { list($statusCode, $errorCode, $message) = $pdo->errorInfo(); $this->logger->error("{$statusCode}:{$errorCode} {$message}"); return false; } $this->logger->info('Database dropped successfully.'); }
/** * @dataProvider driverTypeProvider */ public function testDriverFactory($type) { $conn = $this->createConnection($type); $this->assertNotNull($conn); $driver = PDODriverFactory::create($conn); $this->assertNotNull($driver); $quoted = $driver->quote('foo'); $this->assertEquals('\'foo\'', $quoted); }
public function execute() { $configLoader = $this->getConfigLoader(true); $dsId = $this->getCurrentDataSourceId(); $ds = $configLoader->getDataSource($dsId); if (!isset($ds['dsn'])) { throw new Exception("Attribute 'dsn' undefined in data source settings."); } $dsnParser = new DSNParser(); $dsn = $dsnParser->parse($ds['dsn']); $dbName = $dsn->getAttribute('dbname'); $dsn->removeAttribute('dbname'); $this->logger->debug("Connection DSN: " . $dsn); $pdo = new PDO($dsn, @$ds['user'], @$ds['pass'], @$ds['connection_options']); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $queryDriver = PDODriverFactory::create($pdo); if ($queryDriver instanceof PDOSQLiteDriver) { $this->logger->info('Create database query is not supported by sqlite. ths sqlite database shall have been created.'); return true; } $q = new CreateDatabaseQuery($dbName); $q->ifNotExists(); if (isset($ds['charset'])) { $q->characterSet($ds['charset']); } else { $q->characterSet('utf8'); } $sql = $q->toSql($queryDriver, new ArgumentArray()); $this->logger->info($sql); if ($pdo->query($sql) === false) { list($statusCode, $errorCode, $message) = $pdo->errorInfo(); $this->logger->error("{$statusCode}:{$errorCode} {$message}"); return false; } $this->logger->info('Database created successfully.'); }
public function createQueryDriver() { return PDODriverFactory::create($this); }