28 private static function createConnection($connectionParams) {
30 if (isset($connectionParams[
'dbType']) && isset($connectionParams[
'dbHostName']) &&
31 isset($connectionParams[
'dbUserName']) && isset($connectionParams[
'dbPassword']) &&
32 isset($connectionParams[
'dbName'])) {
37 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
39 if ($connectionParams[
'dbType'] ==
'mysql') {
40 $pdoParams[PDO::MYSQL_ATTR_USE_BUFFERED_QUERY] =
true;
43 'host' => $connectionParams[
'dbHostName'],
44 'username' => $connectionParams[
'dbUserName'],
45 'password' => $connectionParams[
'dbPassword'],
46 'dbname' => $connectionParams[
'dbName'],
47 'driver_options' => $pdoParams,
50 if (!empty($connectionParams[
'dbPort'])) {
51 $params[
'port'] = $connectionParams[
'dbPort'];
53 $conn = Zend_Db::factory(
'Pdo_'.ucfirst($connectionParams[
'dbType']), $params);
54 $conn->setFetchMode(Zend_Db::FETCH_ASSOC);
59 $connectionParams[
'dbName'].
" failed: ".$ex->getMessage());
75 if (file_exists($file)) {
76 $logger->info(
'Executing SQL script '.$file.
' ...');
80 if (($connectionParams = $config->getSection($initSection)) ===
false) {
84 $conn = self::createConnection($connectionParams);
86 $logger->debug(
'Starting transaction ...');
87 $conn->beginTransaction();
90 $fh = fopen($file,
'r');
93 $command = fgets($fh, 8192);
94 if (strlen(trim($command)) > 0) {
95 $logger->debug(
'Executing command: '.preg_replace(
'/[\n]+$/',
'', $command));
97 $conn->query($command);
107 if ($exception == null) {
108 $logger->debug(
'Execution succeeded, committing ...');
112 $logger->error(
'Execution failed. Reason'.$exception->getMessage());
113 $logger->debug(
'Rolling back ...');
116 $logger->debug(
'Finished SQL script '.$file.
'.');
117 $conn->closeConnection();
120 $logger->error(
'SQL script '.$file.
' not found.');
132 public static function copyDatabase($srcName, $destName, $server, $user, $password) {
134 if ($srcName && $destName && $server && $user) {
135 self::createDatabase($destName, $server, $user, $password);
140 $conn =
new PDO(
"mysql:host=$server", $user, $password);
146 $conn->beginTransaction();
149 foreach ($conn->query(
"SHOW TABLES FROM ".$srcName) as $row) {
151 $sqlStmt =
"CREATE TABLE ".$destName.
".".$row[0].
" LIKE ".$srcName.
".".$row[0];
152 $logger->debug($sqlStmt);
153 $result = $conn->query($sqlStmt);
159 $sqlStmt =
"INSERT INTO ".$destName.
".".$row[0].
" SELECT * FROM ".$srcName.
".".$row[0];
160 $logger->debug($sqlStmt);
161 $result = $conn->query($sqlStmt);
182 if($name && $server && $user) {
186 $conn =
new PDO(
"mysql:host=$server", $user, $password);
192 $sqlStmt =
"CREATE DATABASE IF NOT EXISTS ".$name;
193 $result = $conn->query($sqlStmt);
static copyDatabase($srcName, $destName, $server, $user, $password)
Duplicate a database on the same server (same user).
DBUtil provides database helper functions.
IllegalArgumentException signals an exception in method arguments.
static getLogger($name)
Get the logger with the given name.
static createDatabase($name, $server, $user, $password)
Crate a database on the server.
static getInstance($name, $dynamicConfiguration=array())
PersistenceException signals an exception in the persistence service.
static executeScript($file, $initSection)
Execute a sql script.
ConfigurationException signals an exception in the configuration.