sitebar
sitebar copied to clipboard
Blank page and "Unknown system variable 'innodb_version' " in php logs
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).
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;
}