diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/functions.php | 15 | ||||
-rwxr-xr-x | include/sanity_check.php | 25 |
2 files changed, 39 insertions, 1 deletions
diff --git a/include/functions.php b/include/functions.php index 4265692ec..ed6f78eef 100644 --- a/include/functions.php +++ b/include/functions.php @@ -2546,3 +2546,18 @@ } } + function check_mysql_tables() { + $schema = db_escape_string(DB_NAME); + + $result = db_query("SELECT engine, table_name FROM information_schema.tables WHERE + table_schema = '$schema' AND table_name LIKE 'ttrss_%' AND engine != 'InnoDB'"); + + $bad_tables = []; + + while ($line = db_fetch_assoc($result)) { + array_push($bad_tables, $line); + } + + return $bad_tables; + } + diff --git a/include/sanity_check.php b/include/sanity_check.php index 39962219f..44bcb3db4 100755 --- a/include/sanity_check.php +++ b/include/sanity_check.php @@ -156,6 +156,29 @@ if (!class_exists("DOMDocument")) { array_push($errors, "PHP support for DOMDocument is required, but was not found."); } + + if (DB_TYPE == "mysql") { + $bad_tables = check_mysql_tables(); + + if (count($bad_tables) > 0) { + $bad_tables_fmt = []; + + foreach ($bad_tables as $bt) { + array_push($bad_tables_fmt, sprintf("%s (%s)", $bt['table_name'], $bt['engine'])); + } + + $msg = "<p>The following tables use an unsupported MySQL engine: <b>" . + implode(", ", $bad_tables_fmt) . "</b>.</p>"; + + $msg .= "<p>The only supported engine on MySQL is InnoDB. MyISAM lacks functionality to run + tt-rss. + Please convert aforementioned tables to InnoDB (if possible) or re-import the schema before continuing.</p> + <p><b>WARNING: importing the schema would mean LOSS OF ALL YOUR DATA.</b></p>"; + + + array_push($errors, $msg); + } + } } if (count($errors) > 0 && $_SERVER['REQUEST_URI']) { ?> @@ -165,7 +188,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="css/utility.css"> </head> - <body> + <body class='sanity_failed'> <div class="floatingLogo"><img src="images/logo_small.png"></div> <div class="content"> |