Skip to content
Snippets Groups Projects
Unverified Commit 15bbe021 authored by Joas Schilling's avatar Joas Schilling Committed by Morris Jobke
Browse files

Ignore failures of collation change in the pre update step

parent d0a3d179
No related branches found
No related tags found
No related merge requests found
......@@ -129,6 +129,7 @@ class Repair implements IOutput{
*/
public static function getRepairSteps() {
return [
new Collation(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->getDatabaseConnection(), false),
new RepairMimeTypes(\OC::$server->getConfig()),
new RepairLegacyStorages(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()),
new AssetCache(),
......@@ -179,7 +180,7 @@ class Repair implements IOutput{
$connection = \OC::$server->getDatabaseConnection();
$steps = [
new InnoDB(),
new Collation(\OC::$server->getConfig(), $connection),
new Collation(\OC::$server->getConfig(), \OC::$server->getLogger(), $connection, true),
new SqliteAutoincrement($connection),
new SearchLuceneTables(),
];
......
......@@ -24,28 +24,38 @@
namespace OC\Repair;
use Doctrine\DBAL\Exception\DriverException;
use Doctrine\DBAL\Platforms\MySqlPlatform;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\ILogger;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
class Collation implements IRepairStep {
/**
* @var \OCP\IConfig
*/
/** @var IConfig */
protected $config;
/**
* @var \OC\DB\Connection
*/
/** @var ILogger */
protected $logger;
/** @var IDBConnection */
protected $connection;
/** @var bool */
protected $ignoreFailures;
/**
* @param \OCP\IConfig $config
* @param \OC\DB\Connection $connection
* @param IConfig $config
* @param ILogger $logger
* @param IDBConnection $connection
* @param bool $ignoreFailures
*/
public function __construct($config, $connection) {
public function __construct(IConfig $config, ILogger $logger, IDBConnection $connection, $ignoreFailures) {
$this->connection = $connection;
$this->config = $config;
$this->logger = $logger;
$this->ignoreFailures = $ignoreFailures;
}
public function getName() {
......@@ -67,7 +77,15 @@ class Collation implements IRepairStep {
foreach ($tables as $table) {
$output->info("Change collation for $table ...");
$query = $this->connection->prepare('ALTER TABLE `' . $table . '` CONVERT TO CHARACTER SET ' . $characterSet . ' COLLATE ' . $characterSet . '_bin;');
$query->execute();
try {
$query->execute();
} catch (DriverException $e) {
// Just log this
$this->logger->logException($e);
if (!$this->ignoreFailures) {
throw $e;
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment