Ошибка или проблемы в таблице MySQL Joomla jos_session (jos session), устранение и восстановление базы данных MySQL в phpMyAdmin

На одном из сайтов клиента, выскакивала ошибка в базе данных MySQL jos_session (jos session). Возможно первые буквы до нижнего пробела будут другие, т.к. это префикс базы данных, но по умолчанию Joomla 1.5 создает базу данных с названием jos_. Ниже будет описано, как исправить эту ошибку и избавиться от нее насовсем (скорее всего) или на длительное время.

Приблизительная ошибка выглядит следующим образом

jtablesession::Store Failed
DB function failed with error number 144
Table ‘./***/jos_session’ is marked as crashed and last (automatic?) repair failed SQL=INSERT INTO `jos_session`
 ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES 
 ( ’8ab1d274cb4340357aa687da2685588e’,’1358182706′,»,’0′,’1′,’0′ )
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) 
 in ***/public_html/site.ru/libraries/joomla/error/exception.php on line 117

jos_session (jos session) отвечает за сессии пользователей на вашем сайте. При ее крушении выдается соответствующая ошибка и при этом не открывается сам сайт и панель управления сайтом.

При возникновении такой проблемы не стоит унывать. Данная ошибка исправляется очень легко и при этом несколькими способами, единственное что требуется от Вас это доступ к phpMyAdmin где находится ваша база данных с данной ошибкой.

Зайдите в phpMyAdmin вашей хостинг площадке, обязательно сделайте полный дамб базы данных, т.к. иногда может, что то не получится или не туда нажмете по незнанию, в следствии чего можно будет восстановить вашу базу данных и работать с ней снова, а не восстанавливать весь сайт с самого начала. После того как Вы сделали копию базы данных можно приступать к работе.

Способ 1. Заходим в phpMyAdmin, нажимаем на вкладку SQL и выполняем такой запрос REPAIR TABLE jos_session; после чего ждем некоторое время пока выполнится запрос и по его завершению без проблем заходим на сайт и в панель управления сайтом. Минус этого способа, то что данная ошибка может произойти снова.

Способ 2 (или дополнение к способу 1). После выполнения манипуляций согласно способу 1 и проверки работоспособности сайта и панели управления, находясь на вкладке SQL данной базы данных выполняем еще один запрос вида TRUNCATE TABLE jos_session; после чего ваша таблица базы данных должна отчистится полностью и записи в ней будут снова появляться, а Ваша база данных не должна будет «падать». Минус данного способа в том, что со временем Ваша таблица базы данных снова заполнится сессиями и ее снова придется чистить данным способом.

Если после этих манипуляций у вас не работает сайт, то восстановите базу данных из копии сделанной ранее и повторите манипуляции. Если все равно не помогло, то удалите данную таблицу и создайте новую во вкладке SQL следующим скриптом:

CREATE TABLE IF NOT EXISTS `jos_session` (
  `username` varchar(150) DEFAULT '',
  `time` varchar(14) DEFAULT '',
  `session_id` varchar(200) NOT NULL DEFAULT '0',
  `guest` tinyint(4) DEFAULT '1',
  `userid` int(11) DEFAULT '0',
  `usertype` varchar(50) DEFAULT '',
  `gid` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `client_id` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `data` longtext,
  PRIMARY KEY (`session_id`(64)),
  KEY `whosonline` (`guest`,`usertype`),
  KEY `userid` (`userid`),
  KEY `time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Способ 3.Если на сайте нет необходимости в авторизации пользователей и вы хотите снизить нагрузку на сервер — можете сменить тип хранения записей, вместо хранения в базе данных, на хранение в памяти через мускул в phpMyAdmin — выставляем тип для jos_session -> memory.

jos_session таблица хранится с использованием механизма хранения MyISAM — давайте хранить эту таблицу в памяти с помощью двигателя MEMORY хранения!

Для начала нам нужно изменить тип данных поля, так как двигатель MEMORY хранения не поддерживает BLOB / TEXT столбцы:

ALTER TABLE `jos_session` CHANGE `data` `data` VARCHAR( 5000 )
 CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL

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

ALTER TABLE `jos_session` TYPE = memory

MEMORY MySQL система хранения гораздо быстрее, чем MyISAM. Единственное, что сессии будут потеряны, если сервер не работает — но в 99,9999999999999999999% вам не нужно думать об этом, пользователи достаточно повторно Войти.

Источник http://www.wilox.ru/joomla/oshibka-v-tablice-joomla-jos_session-jos-sessionustranenie-i-eyo-vosstanovlenie-v-mysql.html

Примеры работ

Информация