Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

Не показывается размер БД в админке после обновления MySQL

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Внимание: с 6 июля 2020 года phpBB Group прекращает поддержку phpBB версии 3.2.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2020 года.

Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Yukh
phpBB 1.4.4
Сообщения: 127
Стаж: 8 лет 1 месяц
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Не показывается размер БД в админке после обновления MySQL

Сообщение Yukh »

Описание проблемы: После обновления mysql до версии 8.0 перестал отображаться в админке размер БД
Произведенные изменения, после которых начались неполадки: обновление mysql c 7.x до версии 8.0.13
Версия phpBB: 3.2.5
Используемые стили: Prosilver
Используемые моды/расширения: Addon for Thanks for posts, Ajax Chat, Attached Image rotator, Avatar Upload Resize - Lite, Board Rules, CloudFlare IP, Disallow External Images, Extension Highslide, External Links Open in New Window, maps, phpBB Gallery, phpBB Media Embed PlugIn, Post Links, Profile side switcher, QuickReply Reloaded, Site logo (3.2), Stop spamer register, Thanks for posts, Topic Author, Upload Extensions, Web Push Notifications
Версия PHP:: 7.2.14
Используемая СУБД и её версия: MySQL 8.0.13
Ссылка на конференцию: https://alkobus.com
Есть ли у вас тестовый аккаунт: нет
Использовался ли поиск для решения проблемы: нет
Если да, то какие запросы вы использовали:


Как временное решение, исправил код в includes/function_admin.php:

Код: Выделить всё

Закомментил:

/*
                                $version = $row['mysql_version'];

                                if (preg_match('#(3\.23|[45]\.|10\.[0-9]\.[0-9]{1,2}-+Maria)#', $version))
                                {
                                        $db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[45]\.|10\.[0-9]\.[0-9]{1,2}-+Maria#', $version)) ? "`{$db->get_
db_name()}`" : $db->get_db_name();

                                        $sql = 'SHOW TABLE STATUS
                                                FROM ' . $db_name;
                                        $result = $db->sql_query($sql, 7200);

                                        $database_size = 0;
                                        while ($row = $db->sql_fetchrow($result))
                                        {
                                                if ((isset($row['Type']) && $row['Type'] != 'MRG_MyISAM') || (isset($row['Engine']) && ($row['Engine'] == 'MyISA
M' || $row['Engine'] == 'InnoDB' || $row['Engine'] == 'Aria')))
                                                {
                                                        if ($table_prefix != '')
                                                        {
                                                                if (strpos($row['Name'], $table_prefix) !== false)
                                                                {
                                                                        $database_size += $row['Data_length'] + $row['Index_length'];
                                                                }
                                                        }
                                                        else
                                                        {
                                                                $database_size += $row['Data_length'] + $row['Index_length'];
                                                        }
                                                }
                                        }
                                        $db->sql_freeresult($result);

                                }
*/

Код: Выделить всё

Добавил после:

                                $db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[45]\.|10\.[0-9]\.[0-9]{1,2}-+Maria#', $version)) ? "`{$db->get_db_name()}`" : $db->get_db_name();
                                $sql = 'SELECT ROUND(SUM(data_length + index_length), 2) as "Size" FROM information_schema.TABLES WHERE table_schema="' . $db_name .'"';
                                $result = $db->sql_query($sql, 7200);
                                $database_size = 0;
                                while ($row = $db->sql_fetchrow($result))
                                {
                                        $database_size += $row['Size'];
                                }
                                $db->sql_freeresult($result);
Может, да и скорее всего, решение кривое, но на текущий момент цель достигнута.
Может есть какие другие варианты решения вопроса?
Юрий.

Аватара пользователя
LavIgor
Поддержка
Поддержка
Сообщения: 3468
Стаж: 6 лет 3 месяца
Благодарил (а): 41 раз
Поблагодарили: 931 раз

Re: Не показывается размер БД в админке после обновления MySQL

Сообщение LavIgor »

Yukh писал(а):
23.01.2019 17:25
mysql c 7.x
Такой версии нет, до этого была 5.7.
Судя по регулярке, код не рассчитан на более свежие версии MySQL после 5.x.
Пробовали добавить туда восьмёрку (заменить оба вхождения [45]\. на [458]\.)?

Аватара пользователя
Yukh
phpBB 1.4.4
Сообщения: 127
Стаж: 8 лет 1 месяц
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Re: Не показывается размер БД в админке после обновления MySQL

Сообщение Yukh »

LavIgor, скорее всего да, могу ошибаться.
LavIgor писал(а):
23.01.2019 20:22
Пробовали добавить туда восьмёрку (заменить оба вхождения [45]\. на [458]\.)?
Скажу честно - я не силён в регулярках. Не могли бы Вы предоставить строку целиком?
Юрий.

Аватара пользователя
LavIgor
Поддержка
Поддержка
Сообщения: 3468
Стаж: 6 лет 3 месяца
Благодарил (а): 41 раз
Поблагодарили: 931 раз

Re: Не показывается размер БД в админке после обновления MySQL

Сообщение LavIgor »

Yukh, я предоставил подстроки для замены.
Но если хотите целиком, то из Вашего кода выше - найти

Код: Выделить всё

if (preg_match('#(3\.23|[45]\.|10\.[0-9]\.[0-9]{1,2}-+Maria)#', $version))
и заменить на

Код: Выделить всё

if (preg_match('#(3\.23|[458]\.|10\.[0-9]\.[0-9]{1,2}-+Maria)#', $version))
Найти

Код: Выделить всё

$db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[45]\.|10\.[0-9]\.[0-9]{1,2}-+Maria#', $version)) ? "`{$db->get_db_name()}`" : $db->get_db_name();
и заменить на

Код: Выделить всё

$db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[458]\.|10\.[0-9]\.[0-9]{1,2}-+Maria#', $version)) ? "`{$db->get_db_name()}`" : $db->get_db_name();

Аватара пользователя
Yukh
phpBB 1.4.4
Сообщения: 127
Стаж: 8 лет 1 месяц
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Re: Не показывается размер БД в админке после обновления MySQL

Сообщение Yukh »

LavIgor, спасибо за наводку. Завтра попробую поменять регулярку с оригинальным кодом.
Тот код, который использую я вместо того, что закомментировал, работает и без этого.
Юрий.

Аватара пользователя
Yukh
phpBB 1.4.4
Сообщения: 127
Стаж: 8 лет 1 месяц
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 4 раза

Re: Не показывается размер БД в админке после обновления MySQL

Сообщение Yukh »

Добрый день!
Подтверждаю, этих двух замен в оригинальном коде оказалось достаточно чтобы все заработало.
Последний раз редактировалось Sheer 24.01.2019 15:53, всего редактировалось 1 раз.
Причина: Удален оверквотинг
Юрий.

Вернуться в «Поддержка phpBB 3.2.x»