sql >> Database >  >> RDS >> MariaDB

MariaDB 10.6 en NextCloud:COMPRESSED Row is standaard alleen-lezen

Ik heb gisteren OpenBSD 6.9 naar 7.0 geüpgraded.
Het bracht MariaDB-upgrade:10.5 naar 10.6.
Ik heb my.cnf . gecontroleerd veranderen en het leek in orde.
Desalniettemin werden er problemen gevonden op een NextCloud-server die MariaDB op OpenBSD gebruikte.

Wat er gebeurde, was het falen van het updaten van het pakket.
Ik heb verbinding gemaakt met de NextCloud-server met een webbrowser. Er was geen app-dashboard en de updater wachtte in plaats daarvan om te worden gestart. Het betekende pkg_add -u had NextCloud niet bijgewerkt. Door op de startknop op de pagina te klikken, bleek er een uitzondering te zijn opgetreden.

Ik lees nextcloud.log in de server en kreeg:

"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,

Wat betreft COMPRESSED rij-indeling, is MariaDB op weg om het alleen-lezen te laten door "schrijfondersteuning te verwijderen en de functie te beëindigen".
Ze introduceerden innodb_read_only_compressed¶ optie bij 10.6.0 die ON . was standaard.

Dat was de reden waarom het updaten van NextCloud (van 21.0.4) naar 21.0.5 op OpenBSD 7.0 mislukte. Het was niet vanwege de OS- of app-versie, maar de compatibiliteit met MariaDB waarvan de versie groter is dan of gelijk is aan 10.6.0.
Er is een openstaand probleem in de NextCloud-repo.

Nou, ik heb /etc/my.cnf . aangepast tijdelijk om het probleem op te lossen:

  [mysqld]
  (...)
+ innodb_read_only_compressed = 0

Trouwens, ik vond niet hoe ik het op een specifieke database of een tabel moest instellen en zelfs niet de mogelijkheid😅

Ik herstartte mysqld in de server en probeerde de updater op de webpagina opnieuw. Het was tenslotte helemaal geslaagd.

Ik waardeerde de MariaDB-documentatie en verschillende berichten zoals Github-problemen en blogs. Ze hebben me erg geholpen.


  1. Voorkomt deze code SQL-injectie?

  2. string splitsen in meerdere rijen

  3. Inzicht in de unieke beperkingen van SQL Server

  4. Jenkins gebruiken met Kubernetes AWS, deel 1