Compare commits

...

2 commits

Author SHA1 Message Date
rxu
f23af6f485
[ticket/17509] Add MariaDB version requirement check
PHPBB-17509
2025-05-30 11:54:32 +07:00
rxu
b8e5caedbf
[ticket/17509] Fix tests
PHPBB-17509
2025-05-30 11:20:25 +07:00
3 changed files with 19 additions and 3 deletions

View file

@ -202,6 +202,7 @@ $lang = array_merge($lang, array(
'INST_ERR_DB_NO_WRITABLE' => 'Both the database and the directory containing it must be writable.', 'INST_ERR_DB_NO_WRITABLE' => 'Both the database and the directory containing it must be writable.',
'INST_ERR_DB_NO_ERROR' => 'No error message given.', 'INST_ERR_DB_NO_ERROR' => 'No error message given.',
'INST_ERR_PREFIX' => 'Tables with the specified prefix already exist, please choose an alternative.', 'INST_ERR_PREFIX' => 'Tables with the specified prefix already exist, please choose an alternative.',
'INST_ERR_DB_NO_MARIADB' => 'The version of MariaDB installed on this machine is too old, it must be upgraded to at least 10.2.7.',
'INST_ERR_DB_NO_MYSQLI' => 'The version of MySQL installed on this machine is too old, it must be upgraded to at least 5.6.', 'INST_ERR_DB_NO_MYSQLI' => 'The version of MySQL installed on this machine is too old, it must be upgraded to at least 5.6.',
'INST_ERR_DB_NO_MSSQL' => 'The version of Microsoft SQL Server installed on this machine is too old, it must be upgraded to at least SQL Server 2012 (11.0.2100.60)', 'INST_ERR_DB_NO_MSSQL' => 'The version of Microsoft SQL Server installed on this machine is too old, it must be upgraded to at least SQL Server 2012 (11.0.2100.60)',
'INST_ERR_DB_NO_SQLITE3' => 'The version of the SQLite extension you have installed is too old, it must be upgraded to at least 3.8.3.', 'INST_ERR_DB_NO_SQLITE3' => 'The version of the SQLite extension you have installed is too old, it must be upgraded to at least 3.8.3.',

View file

@ -289,6 +289,12 @@ class doctrine implements tools_interface
if (count($primary_key_indexes)) if (count($primary_key_indexes))
{ {
// For PostgreSQL, drop primary index first to avoid "Dependent objects still exist" error
if (stripos($this->get_schema_manager()->getDatabasePlatform()->getname(), 'postgresql') !== false)
{
$this->get_schema_manager()->dropIndex('"primary"', $table_name);
}
$ret = $this->alter_schema( $ret = $this->alter_schema(
function (Schema $schema) use ($table_name, $column_name): void function (Schema $schema) use ($table_name, $column_name): void
{ {
@ -478,7 +484,7 @@ class doctrine implements tools_interface
catch (Exception $e) catch (Exception $e)
{ {
// @todo: check if it makes sense to properly handle the exception // @todo: check if it makes sense to properly handle the exception
return $e->getMessage(); return [$e->getMessage()];
} }
} }

View file

@ -410,12 +410,21 @@ class database
switch ($dbms) switch ($dbms)
{ {
case 'mysqli': case 'mysqli':
if (stripos($db->sql_server_info(), 'mariadb') !== false && version_compare($db_server_version, '10.2.7', '<'))
{
$errors[] = array(
'title' => 'INST_ERR_DB_NO_MARIADB',
);
}
else
{
if (version_compare($db_server_version, '5.6', '<')) if (version_compare($db_server_version, '5.6', '<'))
{ {
$errors[] = array( $errors[] = array(
'title' => 'INST_ERR_DB_NO_MYSQLI', 'title' => 'INST_ERR_DB_NO_MYSQLI',
); );
} }
}
break; break;
case 'sqlite3': case 'sqlite3':
if (version_compare($db_server_version, '3.8.3', '<')) if (version_compare($db_server_version, '3.8.3', '<'))