Warning in ./libraries/sql.lib.php#613
count(): Parameter must be an array or an object that implements Countable
Backtrace
./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
array,
・・・・・・
環境
- Ubuntu 18.04
- phpMyAdmin 4.6.6 documentation
- MariaDB mysql Ver 15.1 Distrib 10.1.44-MariaDB,
- PHP 7.2
上記全てディストリビューションの標準パッケージでインストールしています。
解決方法の選択
この問題は、4.7.4の phpmyadmin で対応できているらしいです。
https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/
最新の公式パッケージをインストールするなどの方法もありますが、
今回は、インストールされている php スクリプトを書き換えることで対応します。
書き換え方法
以下を元にして対応しました。
vim /usr/share/phpmyadmin/libraries/sql.lib.php
613行目近辺
function PMA_isRememberSortingOrder($analyzed_sql_results)
{
return $GLOBALS['cfg']['RememberSorting']
&& ! ($analyzed_sql_results['is_count']
|| $analyzed_sql_results['is_export']
|| $analyzed_sql_results['is_func']
|| $analyzed_sql_results['is_analyse'])
&& $analyzed_sql_results['select_from']
&& ((empty($analyzed_sql_results['select_expr']))
|| (count($analyzed_sql_results['select_expr'] == 1)
&& ($analyzed_sql_results['select_expr'][0] == '*')))
&& count($analyzed_sql_results['select_tables']) == 1;
}
の、
|| (count($analyzed_sql_results['select_expr'] == 1)
を
|| ((count($analyzed_sql_results['select_expr']) == 1)
に直して解決します。
ここの count 関数が括弧で閉じてないのが原因だそうです。