Слетели разделы.

Автор Mapta, 28 мая 2015, 12:27:00

« назад - далее »

0 Пользователи и 4 гостей просматривают эту тему.

Mapta

Пару дней подряд начала появляться ошыбка страницы 502 Bad Gateway.
Обратилась в тех.обслуж. хостера, исправляли-исправляли, в конечном итоге написали так:


_________________________________________

В текущий момент, проблема возникла из-за того, что в процессах MySQL накопилось большое количество процессов такого вида:

+------+------+-----------+-------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+------+-----------+-------+---------+------+-------+------------------+

| 760 | smf | localhost | smf | Sleep | 0 | | |


Процессы в статусе Sleep могут указывать на некорректную работу скриптов (скрипты открывают, но не закрывают сессию, например при использовании pconnect или в иных ситуациях).

Для того, чтобы предотвратить повторение проблемы, мы может установить таймауты для запросов MySQL, чтобы процессы не накапливались.
Пожалуйста, сообщите, если требуется это сделать.

В данный момент, блокировок на уровне MySQL не наблюдалось и проблема с ними не связана. Формат innodb имеет свои нюансы, например, в случае повреждения таблицы БД её гораздо сложнее восстановить, поэтому рекомендуем переводить таблицы в этот формат только в том случае, если будет повторяться проблема с блокировками. Помочь с переводом таблиц в формат Innodb мы можем и готовы сделать это для Вас, в случае необходимости, но в данный момент, рекомендую вариант с установкой таймаутов MySQL - это должно помочь.

-----------------------------------------------------------------------


После этого опять ошыбка 502 и в итоге присылалают ответ :

Максимально подробный анализ проблемы показал, что проблема начинается в момент обращения пользователей к одному из разделов форума "Еміграція", расположенному вот по этой ссылке:
http://mamka.info/index.php?board=49.0

каждый запрос к этому разделу порождал бесконечный рекурсивный запрос к БД следующего вида:
SELECT b.ID_PARENT, b.name, 49 AS ID_BOARD, IFNULL(mem.ID_MEMBER, 0) AS ID_MODERATOR, mem.realName, b.childLevel FROM smf_boards AS b LEFT JOIN smf_moderators AS mods ON (mods.ID_BOARD = b.ID_BOARD) LEFT JOIN smf_members AS mem ON (mem.ID_MEMBER = mods.ID_MEMBER) WHERE b.ID_BOARD = 49;

Мы проанализировали структуру Вашей базы и обнаружили одну странность - в таблице smf_boards строка, отвечающая за раздел "Еміграція" имеет дублирующиеся значения столбцов "ID_PARENT" и "ID_BOARD", а именно 49. Мы не являемся специалистами в области SMF, но логика подсказывает нам, что эти значения не должны быть равны. Мы изменили значение ID_PARENT на 0. Таким образом проблема была успешно решена. Судя по всему, ID_PARENT - это ссылка на родительский раздел форума, поэтому, возможно, в дальнейшем Вы захотите изменить это, но уже из админки Вашего форума. Главное - не настраивать, что раздел является дочерним по отношении к самому себе.

--------------------------------------------------------------------------------

После всех манипуляций на форуме перемистились разделы а при входе в Разделы форума выдает ошыбку:
Раздел не имеет действительной корневой категории
Ремонт и обслуживание не помогают.
И пропал один раздел.

Где искать и что исправлять, подскажите пожалуйста?





Mapta

Через пчпадминку

как понять какое значение давать таблицам ID_BOARD и ID_PARENT для исправления ошибки?  :o

Snow_Irbis

#2
Цитата: Mapta от 28 мая 2015, 12:31:38
Через пчпадминку

как понять какое значение давать таблицам ID_BOARD и ID_PARENT для исправления ошибки?  :o

id_board это идентификатор раздела форума. Значения id_board не меняй, так как изменение этого значения может нарушить отображение тем и сообщений

id_parent - идентификатор раздела в котором находится подфорум, если раздел не является подфорумом то значение равно 0 . Таким образом значение 0 для id_parent каждого раздела форума можно оставить таким и это будет правильно если не было подфорумов, а если были подфорумы и после присовения значение 0 для id_parent они перестали отображаться, то можно либо через админку форума опять сделать подфорумы, либо через пхпМайАдмин для каждого подфорума указать значение для id_parent равное идентификатору раздела в котором нужно что бы отображался данный подфорум+при этом необходимо изменять значение параметра child_level (0-обычный раздел; 1-подфорум)  Как то так  :)

Цитата: MaptaПосле всех манипуляций на форуме перемистились разделы а при входе в Разделы форума выдает ошыбку:
Раздел не имеет действительной корневой категории
Ремонт и обслуживание не помогают.
И пропал один раздел.

Где искать и что исправлять, подскажите пожалуйста?

Переместились как? В смысле их очередность вывода? Если да, то очередность вывода задается значением board_order. Пропавший раздел можно попытаться восстановить вручную, для этого через пхпМайАдмин нужно найти его по названию, после чего проанализировать у него значения: id_cat (идентификатор категории к которой принадлежит раздел), id_parent и child_level про которые я писал выше, и в случае если значения не правильные изменить их вручную.

Mapta

#3
Спасибо большое, O0
одна проблема решена, осталось такое:
при просмотре главной страницы категории изменили свое обычное расположение.
В админке и в пчп все правильно. Как вернуть все на главной странице?


И еще одна проблема: в админке при редактировании не отображаються названия разделов

Snow_Irbis

Цитата: Mapta от 29 мая 2015, 00:35:27
Спасибо большое, O0
одна проблема решена, осталось такое:
при просмотре главной страницы категории изменили свое обычное расположение.
В админке и в пчп все правильно. Как вернуть все на главной странице?

Очередность вывода категорий задается значениями cat_order в таблице smf_categories, эти значения взаимосвязаны с значениями board_order таблицы smf_boards (то есть сперва задается очередность вывода категорий, а потом задается очередность вывода разделов). Описание полей таблиц smf_categories и smf_boards если вдруг что можно посмотреть тут, они правда для 2.0.9 но с 1-й версией форума практически идентичны  :)

Цитата: Mapta от 29 мая 2015, 00:35:27
И еще одна проблема: в админке при редактировании не отображаються названия разделов


Если на самом форуме отображаются, а в админке не отображаются при редактировании то скорее всего что то с движком форума (в таком случае лучше его переустановить). Но на всякий случай проверь в таблице smf_boards через пхпМайАдмин поля name (хранит данные о названии категории) и description (хранит данные о коротком описании категории)  :)

GeorG

Цитата: Mapta от 29 мая 2015, 00:35:27при просмотре главной страницы категории изменили свое обычное расположение.
В админке и в пчп все правильно. Как вернуть все на главной странице?
Попробуйте поменять разделы в админке местами, потом вернуть обратно.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Солярис

Здравствуйте!

Также как и у автора данной темы ни с того, ни с его категории стали отображаться не в заданном в админке порядке.

Подразделы также перемешались.

Что делать ума не приложу?!

Солярис

Главное, что в админке меняешь расположения категории и в админке такое положение изменяется (а также в базе в таблице) smf_categories происходит изменения, но на визуальное расположение категорий и разделов на главной странице сайта это никаким образом не влияет.  :-\

Солярис

#8
Только что  в таблице "smf_categories" поменял значение "catOrder" всех категорий. И ничего. В админке они расположились так как я поменял, но на форуме все выглядит вразнобой, а не так как было настроено?!
 :(

Какая еще таблица в базе за это отвечает, что изменение только указанного значения ни к чему фактически не приводит (это влияет лишь на отображение категорий в админке).

Еще обнаружил, что в конце списка таблиц в базе указано: InnoDB.

Большинство таблиц в базе InnoDB, а некоторые  MyISAM  Это как-то влияет?!

digger®

Цитата: Солярис от 26 октября 2015, 10:59:03Здравствуйте!
Также как и у автора данной темы ни с того, ни с его категории стали отображаться не в заданном в админке порядке.
Подразделы также перемешались.
Это баян
ЦитироватьЧто делать ума не приложу?!
Посмотреть FAQ первым делом? http://www.simplemachines.ru/index.php?topic=9248.msg129557#msg129557

Солярис

#10
Для кого баян, а для кого - новинка.

При этом я речь вел не только о разделах, но и о КАТЕГОРИЯХ форума.

Солярис

#11
На запрос:
​ALTER TABLE `smf_boards` ADD UNIQUE KEY (`id_board`), DROP PRIMARY KEY, ADD PRIMARY KEY ( `board_order`, `id_board` ), ENGINE=InnoDB;
 
​SELECT * FROM `smf_categories` WHERE 1

Выходит ошибка:
SQL запрос:


ALTER TABLE `smf_boards` ADD UNIQUE KEY (`id_board`), DROP PRIMARY KEY, ADD PRIMARY KEY ( `board_order`, `id_board` ), ENGINE=InnoDB;


Ответ MySQL: Документация
 #1072 - Key column 'board_order' doesn't exist in table


board_order у меня именуется в таблице как boardOrder . Сделать запрос с таким значением? Или, наоборот, можно как-то исправить наименование столбца?!

digger®

Цитата: Солярис от 26 октября 2015, 12:43:28board_order у меня именуется в таблице как boardOrder . Сделать запрос с таким значением? Или, наоборот, можно как-то исправить наименование столбца?!
Если поменять название столбца, поломается все остальное.
Этот запрос для SMF2. Для единицы меняйте в запросе названия на соответствующие.

Солярис

Для РАЗДЕЛОВ помогло. Благодарю!

Но. Я же говорил, что у меня перемешались еще и КАТЕГОРИИ форума и их расположение не соответствуют тому, как это задано в админке, и какое значение установлено в таблице для категорий.

Что с этим вот делать?! :(  :(

Солярис

Фантастика какая-то.

После SQL запроса зашел в настройки категорий, ничего не менял, только ЗАНОВО нажал сохранить их в том виде как они отображаются в админке. И всё после этого восстановилось. Фокус какой-то.

Благодарю за участие. Большое спасибо! От сердца прямо отлегло. :)


З.Ы. И, оказывается, значение catOrder в таблице категорий начинается не с единицы, как я думал, а с нуля. То есть первая категория, чтобы она отображалась на первом месте, должна иметь значение "0".
Я бы никогда не догадался. Век живи - век учись.

valdnieks

Цитата: Солярис от 26 октября 2015, 13:19:16Фантастика какая-то.

После SQL запроса зашел в настройки категорий, ничего не менял, только ЗАНОВО нажал сохранить их в том виде как они отображаются в админке. И всё после этого восстановилось. Фокус какой-то.

Благодарю за участие. Большое спасибо! От сердца прямо отлегло. :)


З.Ы. И, оказывается, значение catOrder в таблице категорий начинается не с единицы, как я думал, а с нуля. То есть первая категория, чтобы она отображалась на первом месте, должна иметь значение "0".
Я бы никогда не догадался. Век живи - век учись.

В маршрутизаторе аналогичное, пока не нажмёшь кнопку изменить - никогда не запустится.
Registered Linux user #325316
Последняя версия SMF: SMF 2.0.15
Версия GD: bundled (2.1.0 compatible)
Версия MySQL: 5.5.23
PHP: 5.6.30
Версия Web сервера: Apache/2.4.25 (Win64) PHP/5.6.30

Солярис

Цитата: valdnieks от 26 октября 2015, 14:44:15В маршрутизаторе аналогичное, пока не нажмёшь кнопку изменить - никогда не запустится.

Не совсем понял, что Вы имели ввиду, но до этого я и менял, и сохранял и ничего не происходило.
Даже при изменении значения catOrder.

valdnieks

Цитата: Солярис от 26 октября 2015, 14:55:55Не совсем понял, что Вы имели ввиду, но до этого я и менял, и сохранял и ничего не происходило.
Даже при изменении значения catOrder.

Имел в виду, чтобы нажать кнопку сохранить, необходимо, что-то сделать.
А Вы, фантастика. Не бывает такого. Следовательно, где-то руку приложили.
Registered Linux user #325316
Последняя версия SMF: SMF 2.0.15
Версия GD: bundled (2.1.0 compatible)
Версия MySQL: 5.5.23
PHP: 5.6.30
Версия Web сервера: Apache/2.4.25 (Win64) PHP/5.6.30

Солярис

Цитата: valdnieks от 26 октября 2015, 15:10:49А Вы, фантастика. Не бывает такого. Следовательно, где-то руку приложили.

Можете не верить. Ваше право.

Оно мне надо придумывать?

Только ПОСЛЕ SQL-запроса (который приведен выше) и при ОЧЕРЕДНОМ (то есть далеко не первом; что делалось ранее до SQL-запроса)) сохранении расположения категорий (в админке) это реально повлияло на их отображение на сайте.
Далее не вижу смысла с чем-то спорить.