Дешевый хостинг!
Дешевый хостинг
Рекомендуем
Пока пусто
Опросы
Оцените работу движка
Календарь
«    Ноябрь 2018    »
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
2627282930 
К нам пришли с...
{referer}
Добавлено: 13-03-2013, 12:49
Категория: Ошибки в DLE
Ошибки в MySQL запросах Dle к базе данных

Добрый день, уважаемые читатели блога 11dle.com. На этот раз мы с вами поговорим о том, как решить возникшие проблемы связанные с MYSQL запросами к базе данных DLE движка. Многим наверное знакома ситуация изображенная на скриншоте выше. Приведенная ошибка как правило не сразу появляется в DLE движке, а со временем эксплуатации данной системы управления сайтом. Если вы данную проблему наблюдаете сразу после установки DLE движка, то можно предположить, что вы установили не совсем корректную версию DLE движка. Если данная проблема с MySQL возникла уже в ходе эксплуатации DLE, то вероятней всего ошибка в таком случае немного другого плана. Как её исправить, мы с вами как раз и поговорим в этой статье.

Ошибки возникают в MySQL запросах движка DLE чаще всего по нескольким причинам. Первая причина может заключаться в том, что MySQL получает не верные SQL запросы. Так же подобная проблема в большинстве случаев возникает в некорректном редактировании непосредственно самого кода движка DLE (эта проблема может возникнуть из-за установки какого либо модуля, хака). Второй причиной может стать непосредственно сама база данных, в которой по тем или иным причинам отсутствуют строки в базе данных, и в тот момент когда происходит запрос к данным которых не существует, выскакивает MySQL ошибка, которую можно увидеть на скриншоте. О решении подобных проблем мы с вами и поговорим в данной статье.

Если у вас возникла такая ситуация когда по мере эксплуатации DLE CMS, и вы со временем стали замечать что некоторые категории и модули в движке стали выскакивать в ошибку MySQL, при этом никаких работ по обновлению движка не производились, а только устанавливали бак фиксы, хаки и модули. Если это так, то скорей в его проблема локализована в запросах в коде DLE. Как я писал выше, подобные ошибки не будут возникать, если вы будете внимательно и аккуратно редактировать код файлов DLE. Подобные проблемы могут возникать из-за неопытности, поэтому вы могли случайно что-то не то удалить, либо просто добавить что-то лишнее в сам код запросов DLE движка. Чтобы на вашем сайте вылезла MySQL ошибка, достаточно одного лишнего знака, чтобы запрос уже выдавал MySQL ошибку.

Если вы не владеете языком программирования php, то найти проблемную строчку в коде будет достаточно сложной задачей. В данной ситуации самым оптимальным способом решения проблемы будет замена файла на новый файл из архива DLE. Стоит знать, что все модули (модуль короткой новости, полной новости, добавление комментариев), которые отвечают за пользовательский интерфейс расположены в папке "engine/modules/", а файлы отвечающие за админ панель в DLE движке расположены в папке "engine/inc/". В данной папке названия всех файлов говорят сами за себя. Допустим файлы что отвечают за вывод комментариев в DLE называется "engine/modules/comments.php", файл что отвечает за добавления комментариев называется "engine/modules/addcomments.php" и так далее. Если у вас выскакивают в каких-то моментах MySQL ошибки при попытки добавления комментария на сайт, то Вам стоит скачать DLE скрипт из интернета, и сделать копирование из архива следующий файл: "engine/modules/addcomments.php", с заменой вашего файла на сервере, на новый из скаченного архива.

Выше описанный способ может исправить ряд проблем, если MySQL ошибка появляется из-за кривого кода в php файле, который делает запрос к DLE движку. Также бывают такие ситуации, что во время обновления движка DLE, до актуальной версии, могут возникнуть ряд проблем в с MySql базой. Тут выресовывается вторая проблема, которая может заключаться в том, что в новых версиях скрипта DLE, разработчики добавляют в CMS новый функционал, а соответственно для них в базе данных имеются новые записи, иными словами колонки в таблицах. Если вы попробуете установить новую версию DLE, при этом оставите старую MySQL базу, то в конечном итоге у вас будут в будущем возникать проблемы с запросами к MySql базе, то есть у вас будут сыпаться ошибки. Такая ситуация возникает потому, что DLE скрипт делает запрос к БД, но в старой версии базы данных нет данных такой таблицы, соответственно сервер автоматом возвращает вам MySQL ошибку.

Чтобы решить сложившуюся проблему, Вам нужно будет в ручную с помощью phpmyadmin создать недостающие строчки в БД. Для начала стоит сделать бэкап MySql базы на всякий случай. Это нужно для того, чтобы можно было откатиться обратно если вы сделаете что-то не так.
Чтобы понять, что же нужно добавить в базу данных, и самое важно куда добавить, стоит внимательно прочитать ошибку MySql. Такая строка как "Unknown column 'allow_vote' in 'field list'" говорит о том, что с таким названием колонки 'allow_vote' просто не существует.

Чтобы узнать к какой таблице имеет отношение данный запрос, нужно посмотреть из ошибки запроса. Допустим строчка "UPDATE dle_usergroups SET ..." говорит о том, что запрос осуществляется в таблицу "dle_usergroups", где "dle_" - это тот префикс, который Вы написали при установке dle скрипта (если при установке Вы префикс Dle не трогали, то по умолчанию он будет "dle_").

Из всего выше написанного, можно сделать вывод, что стоит добавить в таблицу "dle_usergroups" (где "dle_" - это префикс) одну дополнительную колонку с именем (в поле "Field") "allow_vote", с указанием некоторых значений для полей таблицы. В данной ситуации, нам нужно добавить колонку, где будет находиться информация для всех групп пользователей. Поскольку единственным значением, которое будет храниться в данном поле будет переключатель чекбокса (разрешить/отменить), мы с вами просто скопируем схожие значения полей для созданной колонки из уже имеющихся записей в базе данных, но в поле "Field" введём название отсутствующего поля "allow_vote".

Чтобы устранить возникшую проблему с MySql запросом, нужно открыть на вашем хостинге скрипт под названием phpmyadmin, которая служит неким редактором баз данных. Как только мы зашли в данный скрипт, выбираем выберите вашу MySql базу, и затем найдите и откройте таблицу "dle_usergroups" (все действия производятся в левой части программы). После того, как откроется таблица "dle_usergroups", нужно открыть в верхней части экрана вкладку «структура», и по данной таблицей нажать внизу кнопку "Добавить". Вам будет открыто полу с пустыми значениями, в поле под названием "Field" надо будет написать "allow_vote", и все остальные значения скопировать в похожих колонок, в которых находится информация о том, включён или выключен чекбокс в модуле. Как только всё выше описанное вы сделаете, нужно соответственно нажать кнопку «Сохранить». Далее просто обновляем страницу сайта где вылезала ошибка, и если вы всё сделали правильно, то ошибка должна уйти. Если возникла ещё одна подобная ошибка, значит нужно в базе данных создать ещё одну колонку со значением поля "Field".


Теги:
Вернуться
  • Комментарий: 0
  • Просмотров: 2 660
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.