sitebar icon indicating copy to clipboard operation
sitebar copied to clipboard

Blank page and "Unknown system variable 'innodb_version' " in php logs

Open antoineemerit opened this issue 1 year ago • 1 comments

After my server upgrade from Debian 11 to Debian 12, my hosted sitebar website became blanked. It was an old install, so I upgrade sitebar to the today master branch (3.6.2).

It was still blank, but I found the following message in my PHP log :

[Wed Oct 18 23:40:54.875685 2023] [php:error] [pid 1692831] [client 192.168.99.10:50032] PHP Fatal error: Uncaught mysqli_sql_exception: Unknown system variable 'innodb_version' in /home/public/www/bookmarks.kozodo.com/htdocs/inc/database.inc.php:534\nStack trace:\n#0 /home/public/www/bookmarks.kozodo.com/htdocs/inc/database.inc.php(534): mysqli_query()\n#1 /home/public/www/bookmarks.kozodo.com/htdocs/config.php(415): SB_DatabaseMySQL->raw()\n#2 /home/public/www/bookmarks.kozodo.com/htdocs/config.php(375): Configuration->loadSQL()\n#3 /home/public/www/bookmarks.kozodo.com/htdocs/config.php(297): Configuration->conversion()\n#4 /home/public/www/bookmarks.kozodo.com/htdocs/config.php(59): Configuration->checkStructure()\n#5 /home/public/www/bookmarks.kozodo.com/htdocs/config.php(478): Configuration->__construct()\n#6 {main}\n thrown in /home/public/www/bookmarks.kozodo.com/htdocs/inc/database.inc.php on line 534, referer: https://bookmarks.kozodo.com/config.php

After a short search I see that MaraiDB release is 10.11.4 and I read that MariaDB 10.11 remove the innodb_version varibale because it's no more aligned with the official InnoDB source code (https://mariadb.com/kb/en/changes-improvements-in-mariadb-1011/#innodb-variables).

antoineemerit avatar Oct 18 '23 22:10 antoineemerit

I've patched the inc/database.php code to check this specific error :

diff --git a/inc/database.inc.php b/inc/database.inc.php
index 5775239..2bf0953 100644
--- a/inc/database.inc.php
+++ b/inc/database.inc.php
@@ -531,7 +531,17 @@ class SB_DatabaseMySQL extends SB_Database
         $this->lastsql = $sql;
         if (SB_LOG_SQL) $this->log("SQL", str_replace("\n",' ',$sql));
         $this->sw->cont();
-        $res = mysqli_query($this->connection, $sql);
+        try
+        {
+           $res = mysqli_query($this->connection, $sql);
+        } 
+        catch (mysqli_sql_exception $e) 
+        {
+           if ($e->getMessage() == "Unknown system variable 'innodb_version'")
+              $res = false;
+           else
+              throw $e;
+        }
         $this->sw->pause();
         return $res;
     }

antoineemerit avatar Oct 18 '23 22:10 antoineemerit