Ошибка или проблемы в таблице 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