Show a warning message in the admin panel when MyISAM is still in use

This commit is contained in:
Tobias Diekershoff 2016-11-20 09:50:14 +01:00
parent 67c1a20ed0
commit 7aaaa0a3c7
4 changed files with 28 additions and 1 deletions

View file

@ -428,6 +428,14 @@ function admin_page_queue(&$a) {
* @return string * @return string
*/ */
function admin_page_summary(&$a) { function admin_page_summary(&$a) {
// are there MyISAM tables in the DB? If so, trigger a warning message
$r = q("select `engine` from `information_schema`.`tables` where `engine`='myisam' limit 1");
$showwarning = false;
$warningtext = "";
if (dbm::is_result($r)) {
$showwarning = true;
$warningtext = sprintf(t('Your DB still runs with MyISAM tables. You should change the engine type to InnoDB. As Friendica will use InnoDB only features in the future, you should change this! See <a href="%s">here</a> for a guide that may be helpful converting the table engines. You may also use the <tt>convert_innodb.sql</tt> in the <tt>/util</tt> directory of your Friendica installation.<br />'), 'https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html');
}
$r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`"); $r = q("SELECT `page-flags`, COUNT(`uid`) AS `count` FROM `user` GROUP BY `page-flags`");
$accounts = array( $accounts = array(
array(t('Normal Account'), 0), array(t('Normal Account'), 0),
@ -478,7 +486,9 @@ function admin_page_summary(&$a) {
'$platform' => FRIENDICA_PLATFORM, '$platform' => FRIENDICA_PLATFORM,
'$codename' => FRIENDICA_CODENAME, '$codename' => FRIENDICA_CODENAME,
'$build' => get_config('system','build'), '$build' => get_config('system','build'),
'$plugins' => array(t('Active plugins'), $a->plugins) '$plugins' => array(t('Active plugins'), $a->plugins),
'$showwarning' => $showwarning,
'$warningtext' => $warningtext
)); ));
} }

4
util/convert_innodb.sql Normal file
View file

@ -0,0 +1,4 @@
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' engine=InnoDB;')
FROM information_schema.tables
WHERE engine = 'MyISAM';

View file

@ -473,3 +473,11 @@ td.pendingnote {
td.pendingnote > p > span { td.pendingnote > p > span {
font-weight: bold; font-weight: bold;
} }
/* warning message */
.warning-message {
padding: 10px;
margin: 5px;
border-left: 5px solid #f00;
font-weight: bold;
}

View file

@ -1,6 +1,11 @@
<div id='adminpage'> <div id='adminpage'>
<h1>{{$title}} - {{$page}}</h1> <h1>{{$title}} - {{$page}}</h1>
{{if $showwarning}}
<div id="admin-warning-message-wrapper">
<p id="admin-warning-message" class="warning-message">{{$warningtext}}</p>
</div>
{{/if}}
<dl> <dl>
<dt>{{$queues.label}}</dt> <dt>{{$queues.label}}</dt>