-f|--force Force the update command (Even if the database structure matches)
-o|--override Override running or stalling updates
toinnodb Convert all tables from MyISAM to InnoDB
Options
- -h|--help|-? Show help information
- -v Show more debug information.
- -f|--force Force the command in case of "update" (Ignore failed updates/running updates)
+ -h|--help|-? Show help information
+ -v Show more debug information.
+ -f|--force Force the update command (Even if the database structure matches)
+ -o|--override Override running or stalling updates
HELP;
return $help;
}
$output = DBStructure::update($a->getBasePath(), true, false);
break;
case "update":
- $force = $this->getOption(['f', 'force'], false);
- $output = Update::run($a->getBasePath(), $force, true, false);
+ $force = $this->getOption(['f', 'force'], false);
+ $override = $this->getOption(['o', 'override'], false);
+ $output = Update::run($a->getBasePath(), $force, $override,true, false);
break;
case "dumpsql":
ob_start();
return 0;
}
-
}
}
echo L10n::t('Check for pending update actions.') . "\n";
- Update::run($a->getBasePath(), true, true, false);
+ Update::run($a->getBasePath(), true, false,true, false);
echo L10n::t('Done.') . "\n";
echo L10n::t('Execute pending post updates.') . "\n";
/**
* @brief Releases a lock if it was set by us
*
- * @param string $key Name of the lock
- * @param bool $force Force the lock to get releases
+ * @param string $key Name of the lock
+ * @param bool $override Overrides the lock to get releases
* @return void
*/
- public static function release($key, $force = false)
+ public static function release($key, $override = false)
{
- self::getDriver()->releaseLock($key, $force);
+ self::getDriver()->releaseLock($key, $override);
}
/**
/**
* (@inheritdoc)
*/
- public function releaseLock($key, $force = false)
+ public function releaseLock($key, $override = false)
{
$cachekey = self::getLockKey($key);
- if ($force) {
+ if ($override) {
$this->cache->delete($cachekey);
} else {
$this->cache->compareDelete($cachekey, getmypid());
/**
* (@inheritdoc)
*/
- public function releaseLock($key, $force = false)
+ public function releaseLock($key, $override = false)
{
- if ($force) {
+ if ($override) {
$where = ['name' => $key];
} else {
$where = ['name' => $key, 'pid' => $this->pid];
/**
* Releases a lock if it was set by us
*
- * @param string $key The Name of the lock
- * @param bool $force Force the lock to get released
+ * @param string $key The Name of the lock
+ * @param bool $override Overrides the lock to get released
*
* @return void
*/
- public function releaseLock($key, $force = false);
+ public function releaseLock($key, $override = false);
/**
* Releases all lock that were set by us
/**
* (@inheritdoc)
*/
- public function releaseLock($key, $force = false)
+ public function releaseLock($key, $override = false)
{
if (empty(self::$semaphore[$key])) {
return false;
* Automatic database updates
*
* @param string $basePath The base path of this application
- * @param bool $force Force the Update-Check even if the lock is set
+ * @param bool $force Force the Update-Check even if the database version doesn't match
+ * @param bool $override Overrides any running/stuck updates
* @param bool $verbose Run the Update-Check verbose
* @param bool $sendMail Sends a Mail to the administrator in case of success/failure
*
* @return string Empty string if the update is successful, error messages otherwise
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function run($basePath, $force = false, $verbose = false, $sendMail = true)
+ public static function run($basePath, $force = false, $override = false, $verbose = false, $sendMail = true)
{
// In force mode, we release the dbupdate lock first
// Necessary in case of an stuck update
- if ($force) {
+ if ($override) {
Lock::release('dbupdate', true);
}
Config::set('system', 'build', $build);
}
- if ($build != DB_UPDATE_VERSION) {
+ if ($build != DB_UPDATE_VERSION || $force) {
require_once 'update.php';
$stored = intval($build);
$current = intval(DB_UPDATE_VERSION);
- if ($stored < $current) {
+ if ($stored < $current || $force) {
Config::load('database');
Logger::log('Update from \'' . $stored . '\' to \'' . $current . '\' - starting', Logger::DEBUG);
Lock::release('dbupdate');
}
}
- } elseif ($force) {
- DBStructure::update($basePath, $verbose, true);
}
return '';