MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB 10.6 i NextCloud:COMPRESSED Row jest domyślnie tylko do odczytu

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować i zabezpieczyć MariaDB na CentOS 8

  2. Jak osiągnąć zgodność z PCI dla MySQL i MariaDB za pomocą ClusterControl — powtórka

  3. Jak TIMESTAMP() działa w MariaDB

  4. Ogłaszamy obsługę MariaDB 10.2 — ClusterControl 1.5

  5. Jak PERIOD_ADD() działa w MariaDB