Zaktualizowałem wczoraj OpenBSD 6.9 do 7.0.
Przyniósł aktualizację MariaDB:10,5 do 10.6.
Sprawdziłem my.cnf
zmiany i wydawało się to w porządku.
Niemniej jednak, problem został znaleziony na serwerze NextCloud przy użyciu MariaDB na OpenBSD.
To, co się stało, to niepowodzenie aktualizacji pakietu.
Połączyłem się z serwerem NextCloud za pomocą przeglądarki internetowej. Nie było pulpitu nawigacyjnego aplikacji, a aktualizator czekał na uruchomienie. Oznaczało to pkg_add -u
nie udało się zaktualizować NextCloud. Kliknięcie przycisku Start na stronie pokazało, że wystąpił wyjątek.
Przeczytałem nextcloud.log
na serwerze i dostałem:
"level":3,
(...)
"Exception":"Doctrine\\DBAL\\Exception\\DriverException",
"Message":"An exception occurred while executing a query:
SQLSTATE[HY000]:
General error:
4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.","Code":4047,
Co do COMPRESSED
format wiersza, MariaDB jest na dobrej drodze, aby zezwolić na tylko do odczytu przez „usunięcie obsługi zapisu i wycofanie tej funkcji”.
Wprowadzili innodb_read_only_compressed¶
opcja w wersji 10.6.0, która była ON
domyślnie.
To dlatego aktualizacja NextCloud (z 21.0.4) do 21.0.5 w OpenBSD 7.0 nie powiodła się. Nie było to spowodowane wersją systemu operacyjnego lub aplikacji, ale kompatybilnością z MariaDB, której wersja jest większa lub równa 10.6.0.
Istnieje otwarty problem z tym związany w repozytorium NextCloud.
Cóż, edytowałem /etc/my.cnf
tymczasowo, aby rozwiązać problem:
[mysqld]
(...)
+ innodb_read_only_compressed = 0
Poza tym nie znalazłem sposobu na ustawienie go w konkretnej bazie danych lub tabeli, a nawet możliwości😅
Zrestartowałem mysqld
na serwerze i ponownie wypróbowałem aktualizator na stronie internetowej. W końcu było to całkowicie udane.
Doceniłem dokumentację MariaDB i kilka postów, takich jak problemy z Github i blogi. Bardzo mi pomogli.