От автора: приветствую вас, друзья. Из этой статьи вы узнаете, что делать, если столкнетесь с ошибкой на сайте DLE MySQL Error! Попробуем устранить такую ошибку и решить проблему. Приступим?
Итак, в один прекрасный день вы зашли на свой сайт на движке DLE, чтобы порадовать своих читателей новостью-другой… а вместо привычной картинки сайта перед вами красивое, но страшное сообщение — MySQL Error! Приблизительно такое:
Но не спешите кричать «Шеф, все пропало — гипс снимают, клиент уезжает» 🙂 На самом деле подобная проблема зачастую решается достаточно быстро и безболезненно. Давайте попробуем прочесть текст ошибки. Суть ошибки заключается в том, что некоему пользователю root (у вас может быть другой) запрещен доступ к серверу MySQL.
Чаще всего такая ошибка возникает в момент переезда с одного хостинга на другой. При переезде зачастую на новом сервере у вас будет другой пользователь и пароль. Соответственно, настройки подключения к серверу баз данных (логин и пароль) остались с прежнего сервера. И эти настройки не мешало бы поменять.
Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк
Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде.
Сможете устроиться на позицию Junior-разработчика.
Узнать подробнее
Командная стажировка под руководством тимлида
90 000 рублей средняя зарплата PHP-разработчика
3 проекта в портфолио для старта карьеры
Где изменить настройки подключения к серверу MySQL? Хранятся они в файле enginedatadbconfig.php
Это открытый в текстовом редакторе файл dbconfig.php. В этом файле нас интересуют в первую очередь строки 7 и 9, на которых и задается логин и пароль. Пропишите значением константы DBUSER логин, полученный от нового хостера, а для DBPASS — нужный пароль. Сохраняем файл и идем проверять сайт.
Как видим, проблема решилась. К слову, в этом же файле вы можете изменить также имя базы данных, если оно поменялось. За это отвечает константа DBNAME. Также иногда имя сервера (константа DBHOST) может отличаться от localhost. В этом случае укажите корректное.
Также вы можете столкнуться и с другими ошибками MySQL Error. В этом случае нужно разбираться с каждой конкретной ошибкой индивидуально. Но зачастую все они также легко исправляются повторным импортом дампа базы данных на новый сервер, то есть восстановлением базы данных из копии.
На этом у меня сегодня все. Удачи!
-
Сейчас проверил — да. Хостер обновил версию. И что делать?
-
-
Максим Бабичев, по каким аргументам фиксить?, там в ссылке написано ‘rulebook’ и ‘node body’ а на dle там другие вроде. Короче я хз как. Откатывать хостера просить незнаю есть ли смысл.
-
JohhnyT, проблему я выделил еще в самом начале, смотрите внимательно)
Дублирую:
category regexp ‘[[:<:]](137)[[:>:]]’
-
Illegal argument to a regular expression.
А вообще, ошибку вам прекрасно бросает и сам PDO
-
Максим Бабичев, это прописывать нужно в консоль phpmyadmin или как мне действовать, а то я нуб?) И как быть если все категории с такой ошибкой, (написал это страницу со 137 кат. просто для примера)?
-
TheAndrey7, мне под новую версию стили тяжело менять будет
-
JohhnyT, выхода у тебя нет. TheAndrey7 верно говорит. У тебя три варианта:
1. Поправить запрос в базу под MySQL 8
2. Обновить DLE
3. Откатить БД -
Максим Бабичев, выбираю вар. 1) Можете написать запрос для всех категорий на сайте, а не только 137 ?
Здравствуйте при установке dle на сервер после заполнения последней страницы установки, где прописывается название БД, ПОЛЬЗОВАТЕЛЬ БД, логин и пароль админа, прописываю нажимаю продолжить и возникает ошибка:
MySQL Error!
————————
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE=MyISAM /*!40101 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci */’ at line 18
Error Number:
1064
——————————————————————————————————————————————
CREATE TABLE dle_category (
`id` smallint(5) NOT NULL auto_increment,
`parentid` smallint(5) NOT NULL default ‘0’,
`posi` smallint(5) NOT NULL default ‘1’,
`name` varchar(50) NOT NULL default »,
`alt_name` varchar(50) NOT NULL default »,
`icon` varchar(200) NOT NULL default »,
`skin` varchar(50) NOT NULL default »,
`descr` varchar(200) NOT NULL default »,
`keywords` text NOT NULL,
`news_sort` varchar(10) NOT NULL default »,
`news_msort` varchar(4) NOT NULL default »,
`news_number` smallint(5) NOT NULL default ‘0’,
`short_tpl` varchar(40) NOT NULL default »,
`full_tpl` varchar(40) NOT NULL default »,
`metatitle` varchar(255) NOT NULL default »,
PRIMARY KEY (`id`)
) TYPE=MyISAM /*!40101 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci */
Данные MySQL
* Сервер: Localhost via UNIX socket
* Версия сервера: 5.5.5-m3
* Версия протокола: 10
* Пользователь: dron@localhost
* MySQL-кодировка: UTF-8 Unicode (utf8)
Веб-сервер
* Apache/2.2.16 (FreeBSD) mod_ssl/2.2.16 OpenSSL/0.9.8e DAV/2 PHP/5.2.14
* Версия MySQL-клиента: 5.5.5-m3
* PHP расширение: mysql
До этого установил 5 сайтов на DLE все было нормально, недавно на сервере проводились тех.работы все обновляли может изза этого не пашет?
Другие сайты на сервере Моя ссылка1, Моя ссылка2, Моя ссылка3
При использовании ряда CMS (например, DLE, vBulletin и др.) временами возникает ошибка mysql с номером 1054.
Текст ошибки Unknown column ‘ИМЯ_СТОЛБЦА’ in ‘field list’ в переводе означает «Неизвестный столбец ‘ИМЯ_СТОЛБЦА’ в списке полей.«. Такая ошибка возникает в том случае, если попытаться выбрать (запрос вида select) или изменить (запрос вида update) данные из столбца, которого не существует. Ошибка чаще всего возникает из-за стoронних модулей. Перечислим несколько возможных причин:
- установлен модуль, расчитанный на более новую версию CMS, чем используемая;
- при установке модуля не выполнились операции изменения структуры таблиц;
- после установки сторонних модулей выполнено обновление системы, которое привело к изменению структуры таблиц; при этом модуль не был обновлен на совместимый;
- Из резервной копии восстановлена более старая база данных, а файлы сайта остались в новой версии.
Пример №1:
Имеется таблица сотрудников подразделения.
Поля: id, фамилия, имя, отчество, год рождения, наличие высшего образования.
create table if not exists employee
(
`id` int(11) NOT NULL auto_increment primary key,
`surname` varchar(255) not null,
`name` varchar(255) not null,
`patronymic` varchar(255) not null,
`year_of_birth` int unsigned default 0,
`higher_education` tinyint unsigned default 0
) ENGINE=MyISAM;
Если обратиться к этой таблице с запросом на выборку несуществующего поля, например пола сотрудника по фамилии Власенко, то результатом будет вышеуказанная ошибка:
mysql> select sex from employee where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Пример №2:
Воспользуемся той же таблицей из примера 1. Если попытаться указать мужской пол у сотрудника по имени Власенко (выяснилось его имя и стало ясно, что это мужчина), то результатом будет та же ошибка:
mysql> update employee set sex=1 where surname=’Власенко’;
ERROR 1054 (42S22): Unknown column ‘sex’ in ‘field list’
Способы борьбы
Самый корректный способ борьбы в устранении причины ошибки. Например, все обновления сайта рекомендуем выполнять сначала на копии сайта и если ошибок нет, то повторять на рабочем сайте. Если при обновлении возникла ошибка, следует найти способ сделать обновление корректно с учетом версий сторонних модулей.
Если по каким-то причинам корректно избежать ошибки не получилось, можно прибегнуть к симптоматическому лечению, которое состоит в простом добавлении недостающих полей в таблицу.
Запрос на добавление:
ALTER TABLE employee ADD COLUMN sex ENUM(‘male’, ‘female’) DEFAULT ‘female’
Что в переводе означает «Изменить таблицу employee, добавив столбец `пол`, назначив ему тип перечисление(мужской/женский) по умолчанию мужской».
При таком добавлении столбца необходимо учитывать, что у всех записей в таблице в столбце sex появится значение по умолчанию. Если добавлять такой столбец как пол (который не может быть равен null и обязательно присутствует у каждого человека), то просто необходимо сразу же
после этого прописать нужное значение во все записи в таблице. В данном случае с добавлением столбца «пол» нужно будет поменять значение на male у всех сотрудников мужского пола.
Трудности могут возникнуть из-за того, что часто нужно самостоятельно определять тип добавляемого столбца.
Примеры:
a) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product
IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Ответ сервера:
Invalid SQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where
product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Отсутствует столбец faqname, добавим его. Логика подсказывает, что если имя — то это скорее всего символы, а не целое число или тип datetime. Количество символов заранее, конечно, неизвестно, но редко имя бывает больше чем 255 символов. Поэтому добавим столбец faqname с указанием типа varchar(255):
ALTER TABLE faq ADD faqname varchar(255)
б) Запроc:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Отсутствует столбец allow_html, добавим его. Смотрим на то значение, которое туда пытается вставить запрос, видим 0. Скорее всего этот столбец может принимать два значения — разрешить/не разрешить (1 или 0), то есть однобайтное целое число вполне подойдёт. Поэтому добавим столбец allow_html с указанием типа tinyint:
ALTER TABLE faq ADD allow_html tinyint
Таким образом можно составить шаблон для «лечения» таких проблем: ALTER TABLE [a] ADD [b] [c];, где
a — имя таблицы, откуда выбираются (или где обновляются) данные;
b — имя столбца, который нужно добавить;
c — тип данных.
Примеры (во всех примерах идёт работа с таблицей dle_usergroups):
1) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_html=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_html=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_html’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_html, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_html tinyint
Для того, чтобы выполнить исправляющий ошибку запрос, необходимо воспользоваться каким-либо mysql-клиентом. В стандартной поставке mysql всегда идёт консольный клиент с названием mysql (в windows mysql.exe). Для того, чтобы подключиться к mysql выполните команду
mysql -hНАЗВАНИЕ_ХОСТА -uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ ИМЯ_БАЗЫ_ДАННЫХ,
после чего введите необходимый запрос и точку с запятой после него в появившейся командной строке.
В том случае, если работа происходит на чужом сервере (например, арендуется хостинг) и нет возможности воспользоваться mysql-клиентом из командной строки (не всегда хостеры представляют такую возможность), можно воспользоваться тем инструментом, который предоставляет хостер — например, phpMyAdmin, и в нём ввести нужный sql-запрос.
В то же время наиболее подходящий инструмент для работы с mysql — это MySQL Workbench — разработка создателей mysql с достаточно удобным пользовательским интерфейсом.
Если же нет возможности подключиться к mysql напрямую (например из-за ограничений файрвола), то в ряде случаев возможно удалённо подключиться к MySQL-серверу через SSH-туннель.
2) Запрос:
UPDATE dle_usergroups set group_name=‘Журналисты’, allow_subscribe=‘0’ WHERE id=‘3’;
Ответ сервера:
Invalid SQL: UPDATE dle_usergroups set group_name=’Журналисты’, allow_subscribe=’0′ WHERE id=’3′;
MySQL Error: Unknown column ‘allow_subscribe’ in ‘field list’
Error Number: 1054
Решение:
a=dle_usergroups, b=allow_subscribe, c=tinyint, то есть
ALTER TABLE dle_usergroups ADD allow_subscribe tinyint
3) Запрос:
SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
Oтвет сервера:
InvalidSQL: SELECT faqname, faqparent, displayorder, volatile FROM faq where product IN (», ‘vbulletin’, ‘watermark’, ‘cyb_sfa’, ‘access_post_and_days’);
MySQL Error: Unknown column ‘faqname’ in ‘field list’
Error Number: 1054
Решение:
a= faq, b=faqname, c=varchar(255), то есть
ALTER TABLE faq ADD faqname varchar(255)
Результат
В результате добавления необходимого поля ошибка должна исчезнуть. Однако, существует вероятность того, что в структуре таблиц не хватало несколько столбцов: в этом случае ошибка повторится с указанием другого имени столбца, для которого потребуется повторить процедуру. Помните, что добавление незаполненных столбцов угаданного типа не всегда будет соответствовать задуманной логике приложения и может нарушить часть функциональности.
© Все права на данную статью принадлежат порталу webew.ru.
Перепечатка в интернет-изданиях разрешается только с указанием автора
и прямой ссылки на оригинальную статью. Перепечатка в печатных
изданиях допускается только с разрешения редакции.
ilgiz
20.12.2013
dle
Все вопросы » MySQL
3491
вопрос
Создал mysql базу на хостинге 500mb.net При установке dle в шаге где прописываются все данные mysql, выдает такую вот ошибку:
Все данные вводил правильно. В чем может быть проблема?
Ответа пока нет
10 комментариев
Юзер
18 1
vLKII — 2013-12-2020 декабря 2013 13:26 — #20330
Неправельно укаозал сервер. Вроде. Какой хост?
Юзер
7
ilgiz — 2013-12-2020 декабря 2013 13:28 — #20331
Не, сервер верно указал. Хостинг 500mb.net
Юзер
18 1
vLKII — 2013-12-2020 декабря 2013 13:35 — #20332
Что вставил в поле сервер?
Юзер
18 1
vLKII — 2013-12-2020 декабря 2013 13:39 — #20334
Юзер
18 1
vLKII — 2013-12-2020 декабря 2013 13:42 — #20335
В engine/data/dbconfig.php отредактируй логин и пароль.
Юзер
7
ilgiz — 2013-12-2020 декабря 2013 14:22 — #20341
PHP-developer
1783 14091310
Sander — 2013-12-2020 декабря 2013 14:30 — #20343
Попробуй «Сервер MySQL» поставить не localhost, как сейчас на скрине.
А то что в настройках на первом скрине, колонка после пароля, MySQL Host Name
SanDev.pro
— мой блог.
Telegram: @sandev
Skype: Sander8804
Юзер
7
ilgiz — 2013-12-2020 декабря 2013 14:52 — #20348
Спасибо! Все установилось!
Юзер
18 1
vLKII — 2013-12-2020 декабря 2013 15:00 — #20349
Возможно все зароботало вот только дело в днс. Почистите его. В повер шел или что там у вас, вбейте: ipconfig /flushdns
Юзер
7
ilgiz — 2013-12-2020 декабря 2013 15:03 — #20350
Спасибо за содействие. Sander решил проблему)
Похожие вопросы
Последние события
- События
- Заказы
- Модули
-
TeraMoune
Telegram & Steam авторизациярегистрация
3-06-2023, 02:29
Нет
-
ciberg
Вывод рекламы по странам/IP — Адсенс или Яндекс?
3-06-2023, 00:46
Ваш плагин тоже по IP фильтрует?
-
Kims
Вывод рекламы по странам/IP — Адсенс или Яндекс?
3-06-2023, 00:02 -
lutskboy
Вывод рекламы по странам/IP — Адсенс или Яндекс?
2-06-2023, 13:28
у меня есть . плагин. 5$. открытый исходный код
-
dasdeman
Telegram & Steam авторизациярегистрация
2-06-2023, 13:16
Возможна оплата webmoney?
-
Slavchik
Не показывает различные ошибки. как решить?
2-06-2023, 04:26
Для начала установите дефолтный шаблон из дистрибутива cms и проверье на нём.
-
amnistik
Чат для DLE 15.0 — 15.1?
1-06-2023, 16:21
Он снят с продажи, а есть еще какие то варианты?
-
TeraMoune
Не показывает различные ошибки. как решить?
1-06-2023, 03:14
Все подобные уведомления происходят при вызове функции DLEalert. Смотрите в консоль, учитесь работать с ней, читайте ошибки, ищите объяснение и решение в интернете. Уведомлений подобно этому полно. С разделом личные сообщения при отправке есть ряд уведомлений, при изменении рейтинга, с взаимодействием закладок, и тд. Это всё описано в файле dle_js.js (у файла есть dev версия читаемая для понимающих находится в папке Developer)
-
deadluk
Обновить шаблон и внести правки
30-05-2023, 09:40
отписал в лс по контактам
-
raimikmb
Модуль вставки рекламы после абзаца в новости
30-05-2023, 07:39
- Адаптировать 2 плагина от lazydev… 0
- Обновить шаблон и внести правки 1
- Модуль вставки рекламы после абза… 3
- Сделать возможность добавления ги… 0
- Нужно подключить новый редактор н… 0
- Подключить оплату к корзине 3
- Плагин пересохранения новостей 1
- на Dle 14 интернет магазин (с кор… 3
- Для ЧПУ 1 нужно удалить id и html… 10
- Нужно доработать dle под доску об… 2
- Alphabet Ajax news 0
- Модуль GoogleMapsReviews — отзывы… 0
- Avatar crop 0
- Telegram & Steam авторизация… 4
- UBlocks — произвольный набор блок… 0
- UTABS — Новые закладки для пользо… 0
- FB2Reader — Читалка книг в формат… 0
- Разрешения на BBcode по группам п… 1
- Ajax search template 0
- Index post 0
INSERT INTO dle_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br, votes, access, expires, symbol, flag, blog_cat,
blog_approve
, blog_name, sait_status, blog_cat,
blog_approve
, blog_name, sait_status, blog_cat,
blog_approve
, blog_name, sait_status, blog_cat,
blog_approve
, blog_name, sait_status, blog_cat,
blog_approve
, blog_name, sait_status, blog_cat,
blog_approve
, blog_name, sait_status, tags) values (‘2009-05-07 14:36:54’, ‘admin’, ‘тест’, ‘тест’, », ‘тест’, ‘тесттест’, ‘тесттест’, ‘0’, ‘test’, ‘1’, ‘1’, ‘1’, ‘0’, ‘1’, ‘1’, ‘0’, », ‘0000-00-00’, », ‘1’, », », », ‘on’, », », », ‘on’, », », », ‘on’, », », », ‘on’, », », », ‘on’, », », », ‘on’, »)
MySQL Error!
MySQL error in file: /engine/modules/show.short.php at line 83
Error Number: 1064
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')) c ON (p.id=c.news_id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHER...' at line 1
SQL query:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p INNER JOIN (SELECT DISTINCT(dle_post_extras_cats.news_id) FROM dle_post_extras_cats WHERE cat_id IN ()) c ON (p.id=c.news_id) LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE approve=1 AND allow_main=1 AND date < '2021-04-14 15:11:33' ORDER BY fixed desc, date DESC LIMIT 0,21
#Update: Проблема была в базе данных, таблицы которой были сильно изменены сторонними модулями. BlockPro работает отлично.
MySQL error in file: /engine/classes/mysql.php at line 53
Error Number: 1
MySQL Error!
The Error returned was: Too many connections
В конфиге — max connections = 400 (не знаю, много это или мало, по умолчанию было 150)
{include file="engine/modules/base/blockpro.php?template=blockpro/list&limit=5&catId=2"}
{* $block_id - это уникальный идентификатор блока (у блоков с разными настройками он разный) для того, что бы правильно организовать постраничную навигацию на ajax. *} <div id="{$block_id}"> {$pages} {* Тут мы определяем количество новостей в блоке $list - переменная, содержащая массив с новостями. *} {var $newsCount = $list|length} В блоке {$newsCount} {$newsCount|declination:'новост|ь|и|ей'} {*Пробегаем по массиву с новостями*} {foreach $list as $key => $el} <div class="content content-border-bottom"> <div class="col col-mb-12"> рейтинг: {$el.showRating} {$el.showRatingCount} <h3> {$el.favorites}[{$el.id}] <a href="{$el.url}">{$el.title}</a> {if $el.allow_edit} <a href="#" {$el.editOnclick}>[редактировать]</a> {/if} </h3> <img src="{$el.avatar}" alt="{$el.name}" width="46"> {$el.category|catinfo:'name'} | {$el.category|catinfo:'url'} | {$el.date|dateformat} | {$el.date|dateformat:"d F Y"} в новости: {$el.short_story|length} симв. </div> </div> {if $key == 1} <div class="content content-border-bottom"> <div class="col col-mb-12"> <h4>Выводим навигацию между новостями</h4> {$pages} </div> </div> {/if} {foreachelse} {*Если новостей нет - выведем информацию об этом*} <p>Новостей нет</p> {/foreach} </div> <!-- #{$block_id} -->
Многие сталкиваются с проблемами MySQL базы. Давайте попробуем разобраться, что делать, если появилась ошибка подобного характера
MySQL error in file: /engine/modules/show.full.php
В основном данная ситуация случается в следствии некорректной работы MySQL на стороне хостинга
1. Инструкция по устранению ошибки:
в phpMyAdmin выполните SQL команду:
DROP TABLE IF EXISTS `dle_views`;
CREATE TABLE `dle_views` (
`id` mediumint(8) NOT NULL auto_increment,
`news_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
2. Зайти на сайт и радоваться)
Если ошибка повторяется, меняйте хостинг или перейдите в админпанели DLE — Настройка системы — Оптимизация и отключите пункт Cчетчик просмотров новостей