migrations: refuse to apply empty schema files

This commit is contained in:
Andrew Dolgov 2021-03-04 10:13:29 +03:00
parent 4ede76280b
commit 8f8ca49e4b
1 changed files with 26 additions and 20 deletions

View File

@ -82,30 +82,36 @@ class Db_Migrations {
else else
Debug::log("Starting migration to $version...", Debug::LOG_VERBOSE); Debug::log("Starting migration to $version...", Debug::LOG_VERBOSE);
// mysql doesn't support transactions for DDL statements $lines = $this->get_lines($version);
if (Config::get(Config::DB_TYPE) != "mysql")
$this->pdo->beginTransaction();
foreach ($this->get_lines($version) as $line) { if (count($lines) > 0) {
Debug::log($line, Debug::LOG_EXTENDED); // mysql doesn't support transactions for DDL statements
try { if (Config::get(Config::DB_TYPE) != "mysql")
$this->pdo->query($line); $this->pdo->beginTransaction();
} catch (PDOException $e) {
Debug::log("Failed on line: $line", Debug::LOG_VERBOSE); foreach ($lines as $line) {
throw $e; Debug::log($line, Debug::LOG_EXTENDED);
try {
$this->pdo->query($line);
} catch (PDOException $e) {
Debug::log("Failed on line: $line", Debug::LOG_VERBOSE);
throw $e;
}
} }
if ($version == 0 && $this->base_is_latest)
$this->set_version($this->get_max_version());
else
$this->set_version($version);
if (Config::get(Config::DB_TYPE) != "mysql")
$this->pdo->commit();
Debug::log("Migration finished, current version: " . $this->get_version(), Debug::LOG_VERBOSE);
} else {
Debug::log("Migration failed: schema file is empty or missing.", Debug::LOG_VERBOSE);
} }
if ($version == 0 && $this->base_is_latest)
$this->set_version($this->get_max_version());
else
$this->set_version($version);
if (Config::get(Config::DB_TYPE) != "mysql")
$this->pdo->commit();
Debug::log("Migration finished, current version: " . $this->get_version(), Debug::LOG_VERBOSE);
} catch (PDOException $e) { } catch (PDOException $e) {
Debug::log("Migration failed: " . $e->getMessage(), Debug::LOG_VERBOSE); Debug::log("Migration failed: " . $e->getMessage(), Debug::LOG_VERBOSE);
try { try {