19declare(strict_types=1);
29 return hash(
"sha256", implode(
"-", [
31 $this->config->getHost(),
32 $this->config->getPort(),
33 $this->config->getDatabase()
39 return "The database is populated with ILIAS-tables.";
52 if ($environment->getResource(Setup\Environment::RESOURCE_DATABASE)) {
56 new \ilDatabaseExistsObjective($this->config)
66 $db = $environment->
getResource(Setup\Environment::RESOURCE_DATABASE);
67 $io = $environment->getResource(Setup\Environment::RESOURCE_ADMIN_INTERACTION);
72 $io->text(
"Default DB engine is $default");
77 $io->text(
"reading dump file, this may take a while...");
82 throw new Setup\UnachievableException(
83 "Cannot determine database default engine, must be InnoDB, `$default` given."
95 $db = $environment->getResource(Setup\Environment::RESOURCE_DATABASE);
102 $probe_tables = [
'usr_data',
'object_data',
'object_reference'];
103 $number_of_probe_tables = count($probe_tables);
105 $number_of_tables = count($tables);
108 $number_of_tables > self::MIN_NUMBER_OF_ILIAS_TABLES
109 && count(array_intersect($tables, $probe_tables)) === $number_of_probe_tables;
117 $path_to_db_dump = $this->config->getPathToDBDump();
118 if (!is_file(realpath($path_to_db_dump)) ||
119 !is_readable(realpath($path_to_db_dump))) {
121 "Cannot read database dump file: $path_to_db_dump"
128 }
catch (Throwable
$e) {
130 "Cannot populate database with dump file: $path_to_db_dump. Query failed: $query wih message " .
$e->getMessage(
140 $handle = fopen($path_to_db_dump,
"r");
141 while (($line = fgets($handle)) !==
false) {
142 if (preg_match(
'/^--/', $line)) {
145 if (preg_match(
'/^\/\*/', $line)) {
150 if (!preg_match(
'/;$/', trim($line))) {
169 case 'pdo-mysql-innodb':
173 $db->
manipulate(
'SET default_storage_engine=InnoDB;');
181 $r = $db->
query(
'SHOW ENGINES ');
185 if (strtoupper(
$d->Support) ===
'DEFAULT') {
186 $default =
$d->Engine;
190 return strtolower($default);
191 }
catch (Throwable
$e) {
Signals that some goal won't be achievable by actions of the system ever.
isApplicable(Setup\Environment $environment)
@inheritDoc
const MIN_NUMBER_OF_ILIAS_TABLES
isDatabasePopulated(ilDBInterface $db)
queryReader(string $path_to_db_dump)
getDefaultEngine(ilDBInterface $db)
readDumpFile(ilDBInterface $db)
getPreconditions(Setup\Environment $environment)
setDefaultEngine(ilDBInterface $db)
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
An environment holds resources to be used in the setup process.
getResource(string $id)
Consumers of this method should check if the result is what they expect, e.g.
fetchObject(ilDBStatement $query_result)
prepareManip(string $a_query, ?array $a_types=null)
execute(ilDBStatement $stmt, array $data=[])
manipulate(string $query)
Run a (write) Query on the database.
query(string $query)
Run a (read-only) Query on the database.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...