sql >> データベース >  >> RDS >> MariaDB

MariaDB 10.6およびNextCloud:COMPRESSEDRowはデフォルトで読み取り専用です

    昨日、OpenBSD6.9を7.0にアップグレードしました。
    これにより、MariaDBが10.5から10.6にアップグレードされました。
    my.cnfを確認しました 変化し、それは大丈夫だったようです。
    それにもかかわらず、OpenBSDでMariaDBを使用しているNextCloudサーバーで問題が見つかりました。

    何が起こったのかは、パッケージの更新の失敗でした。
    WebブラウザでNextCloudサーバーに接続しました。アプリのダッシュボードはなく、代わりにアップデーターが起動するのを待ちました。それはpkg_add -uを意味しました NextCloudの更新に失敗しました。ページのスタートボタンをクリックすると、例外が発生したことが表示されました。

    nextcloud.logを読みました サーバーで取得しました:

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

    COMPRESSEDについて 行形式のMariaDBは、「書き込みサポートを削除して機能を廃止する」ことにより、読み取り専用にするための準備を進めています。
    彼らはinnodb_read_only_compressed¶を導入しました ONであった10.6.0のオプション デフォルトで。

    OpenBSD 7.0でNextCloud(21.0.4から)を21.0.5に更新できなかったのはそのためです。これは、OSやアプリのバージョンではなく、バージョンが10.6.0以上のMariaDBとの互換性によるものです。
    NextCloudリポジトリに関連する未解決の問題があります。

    さて、私は/etc/my.cnfを編集しました 問題を解決するために一時的に:

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

    その上、特定のデータベースやテーブルに設定する方法や、可能性すら見つかりませんでした😅

    mysqldを再起動しました サーバーで、Webページのアップデータを再試行しました。結局のところ、それは完全に成功しました。

    MariaDBのドキュメントと、Githubの問題やブログなどのいくつかの投稿に感謝します。彼らは私を大いに助けてくれました。


    1. MySQLに存在する場合のドロップテーブル

    2. バイト長に基づいてUTF8文字列を短縮する最良の方法

    3. 日常生活でデータベースをどのように使用するか

    4. PL / pgSQLで最も近いX分に丸める方法は?