1

Тема: Убилась таблица mt_session в MT4.1

Это проявляется в том, что при работе с админ-модулем при каждом запросе к базе данных (выбор пункта меню, ребилд, попытка добавить asset и т.д.) меня выкидывает на экран с логином. Часть операций все же можно завершить, повторно зайдя, но, к примеру, добавление картинки уже полностью невозможно. Да и достает уже после каждого шага заходить обратно.
Изучение базы в phpMyAdmin привело к выводу, что с таблицей mt_session все плохо. Она, по мнению phpMyAdmin, просто не существует.
Вопрос:
как мне лучше поступить, чтобы исправить ситуацию? создать таблицу заново? ничего, если я потеряю при этом ее содержимое?
Скопировать базу данных в новую не могу -  процесс слетает именно на этой таблице.

В 4.2 скрипт по созданию этой таблицы - такой:
CREATE TABLE `mt42`.`mt_session` (
`session_data` mediumblob,
`session_email` varchar( 255 ) default NULL ,
`session_id` varchar( 80 ) NOT NULL default '',
`session_kind` char( 2 ) default NULL ,
`session_name` varchar( 255 ) default NULL ,
`session_start` int( 11 ) NOT NULL default '0',
PRIMARY KEY ( `session_id` ) ,
KEY `mt_session_kind` ( `session_kind` ) ,
KEY `mt_session_start` ( `session_start` ) ,
KEY `mt_session_name` ( `session_name` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1;

В 4.1 ее структура - такая же?
Перспектива вручную переносить все записи в исправленный блог просто шокирует. Буду очень признателен за любые подсказки, как можно все исправить малой кровью.
Спасибо!



2

Re: Убилась таблица mt_session в MT4.1

Если такой таблицы нет, её нужно создать. Ваш SQL-код правильный для MT 4.1, только кодировка желательна не latin1, а utf-8. Проверьте вообще везде в базе, чтобы была кодировка utf-8, а сравнение было с utf8_general_ci.

Выполните вот этот запрос через PHPMyAdmin:

CREATE TABLE IF NOT EXISTS `mt_session` (
  `session_data` mediumblob,
  `session_email` varchar(255) default NULL,
  `session_id` varchar(80) NOT NULL default '',
  `session_kind` varchar(2) default NULL,
  `session_name` varchar(255) default NULL,
  `session_start` int(11) NOT NULL default '0',
  PRIMARY KEY  (`session_id`),
  KEY `mt_session_kind` (`session_kind`),
  KEY `mt_session_start` (`session_start`),
  KEY `mt_session_name` (`session_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Это создаст пустую таблицу, в которую при первом же заходе в админку добавятся необходимые данные.

Добавлено спустя     1 минуту   23 секунды:
Хотя, если у вас сейчас вся база в latin1, то просто так не отделаетесь ;) Нужно будет конвертировать её в UTF-8.



3

Re: Убилась таблица mt_session в MT4.1

Спасибо! Все заработало :)
Поменял и кодировку заодно. Интересно, а на что она влияет? Я как-то и раньше с подозрением смотрел на кодировку latin, но жить она вроде не мешала пока.



4

Re: Убилась таблица mt_session в MT4.1

Проапгрейдился до версии 4.2. Заметил, что русские буквы, к сожалению, после апгрейда превратились в "кашу". Похоже, что я не все кодировки поменял(оказалось,кодировки для базы и для таблицы - изменены. а вот для полей - остались latin). Может стоило оставить все в latin? Во всяком случае, есть с чем поэкспериментировать :)



5

Re: Убилась таблица mt_session в MT4.1

Arelav пишет:

Проапгрейдился до версии 4.2. Заметил, что русские буквы, к сожалению, после апгрейда превратились в "кашу". Похоже, что я не все кодировки поменял(оказалось,кодировки для базы и для таблицы - изменены. а вот для полей - остались latin). Может стоило оставить все в latin? Во всяком случае, есть с чем поэкспериментировать :)

вся база должна быть в UTF8, где то на форуме было обсуждение.
вот http://movable-type.ru/forums/viewtopic.php?id=43

Отредактировано lexxa (18:08:2008 11:00:34)



6

Re: Убилась таблица mt_session в MT4.1

Выяснилось, что таблица "убивалась" из-за неполадок, связанных с комментами. в какой-то момент скрипт слетал при попытке что-то записать в таблицу mt-session, которая и зависала в состоянии in use, что лечилось только созданием новой таблицы.
Что касается кодировок, то решил для начала откатиться на latin. Апгрейд прошел удачно, все работает. Поставил себе Mid-Century termplate set. Все классно, за исключением одного глюка с отправкой комментов на русском.
Переход на utf-8 попробую попозже, просто он по трудоемкости потяжелее будет, чем переход назад. В данный момент нет времени. но, повторюсь, на первый взгляд вроде все работает и с кодировкой latin1 (hosting Yahoo).
Всем спасибо за помощь! :)



7

Re: Убилась таблица mt_session в MT4.1

Нужно будет написать в wiki статью, как мягко перебраться на utf-8…