Administrator ANDROS Posted December 18, 2015 Administrator Share Posted December 18, 2015 I. При заполнении config.php в строке $config['Database']['technicalemail'] = '[email protected]'; нужно удалить образец е-мейла, [email protected], и вместо образца вписать свой реальный е-мейл. II. Если задаёте вопрос про ошибку БД, обязательно приводите текст ошибкиЧто такое "текст ошибки"? Это нЕ то сообщение "В базе данных произошла ошибка...", которое выводится пользователям. Это отчёт об ошибке, который приходит Вам на почту, на указанный в конфиге мыл.III. Посмотрим на него подробно.Пример, Вам на почту пришло вот такое: Код: Database error in vBulletin : Invalid SQL: SELECT varname, value, datatype FROM setting; MySQL Error : MySQL server has gone away Error Number : 2006 Request Date : Saturday, January 29th 2011 @ 10:07:28 PM Error Date : Saturday, January 29th 2011 @ 10:07:33 PM Script : http://forum.example.com/attachment.php?attachmentid=67999&stc=1&thumb=1&d=1272640505 Referrer : http://forum.example.com/showthread.php?goto=newpost&t=294 IP Address : 127.0.0.1 Username : Юзер Classname : vB_Database MySQL Version : по пунктам, что сие значитInvalid SQL: - во время обработки какого запроса произошла ошибкаMySQL Error: - по сути, самая главная часть. Какая именно ошибка произошлаError Number: номер ошибки. Это не порядковый номер ошибки Вашего форума) Подробно об ошибках можно прочесть здесь: http://dev.mysql.com/doc/refman/5.0/...-handling.html В частности, Server Error Codes and Messages и Client Error Codes and MessagesRequest Date: Error Date: - дата запроса и дата ошибкиScript: - при выполнении какого конкретно скрипта произошла ошибкаReferrer: - реферрерIV. Наиболее часто встречающиеся ошибки БД и как с ними бороться, практические рекомендации.Ахтунг: на время выполнения реставрационных работ с таблицами закрывайте форум, не пополняйте ряды камикадзе! = = = = = Ошибки БД при установке/обновлении форума = = = = = если при установке форума Вам выводится сообщение Цитата: Database error The database has encountered а problem. Please try the following: ..... нажмите ctrl+u на странице и прочтите, что за ошибка.Скорее всего, там будет нечто такое: Код: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user '*****' (using password: YES) /1/home/users/example/www/forum.example.com/includes/class_core.php on line 311 MySQL Error : Error Number : Access denied - Доступ запрещён.Открывайте config.php и проверяйте, правильно ли Вы его заполнили Код: Invalid SQL: CREATE TABLE Имя_Таблицы MySQL Error : Table 'Имя_Таблицы' already exists Error Number : 1050 Таблица "Имя_Таблицы" уже существуетУбедитесь, что Вы проводите установку форума в пустую базу Код: MySQL Error : Illegal mix of collations (cp1251_bin,IMPLICIT) and (latin1_bin,IMPLICIT) for operation '=' Error Number : 1267 или, аналогичное: Код: MySQL Error : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' Error Number : 1267 Illegal mix of collations: Недопустимое сочетание сопоставленийидём в phpmyadmin - и смотрим на кодировки таблиц и полей таблицВсе таблицы базы должны быть в одной кодировкеВсе строковые поля таблиц должны быть в кодировке таблицАналогичная ошибка, Illegal mix of collations, может возникать при поисковых запросах, если в БД бардак из кодировок.NEW! Развёрнутое дополнение по поводу "Illegal mix of collations" - в этом посте NEW! Если при установке форума получаем ошибку Код: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead это означает, что у вас ПХП 5.5 и вышеи про mysql надо забыть, используем mysqli открыть конфиг.пхпверхний блок****** DATABASE TYPE ******строка$config['Database']['dbtype'] = 'mysql';дописать букву iвот так$config['Database']['dbtype'] = 'mysqli';сохранитьи будет счастье... если вобла справится со всеми остальными особенностями новых версий пхп, но об этом - уже нЕ в этой теме = = = = = Ошибки/обвалы соединения, превышение нагрузки = = = = = Код: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) /usr/hosting/1/www/example.com/forum/includes/class_core.php on line 311 MySQL Error : Error Number : здесь в пункте MySQL Error: - пустоВ данной ошибке говорится, что нет соединения с базой данных. К хостеру. Код: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Too many connections /home/example/data/www/example.com/includes/class_core.php on line 311 MySQL Error : Error Number : "Too many connections" - дословно "слишком много соединений"возникает по разным причинам- действительно много народу/ботов ломится на форум- хостер не тянет, или у него стоят какие-то ограниченияРешение: смотреть логи доступа, может, действительно было столпотворение в этот момент... или дос/ддос (не обязательно Вашего форума, мб под огнём кто-то из расположенных на том же сервере)посоветоваться с хостером, если он достаточно адекватный Код: mysql_connect(): User Имя_юзера_БД has already more than 'max_user_connections' active connections /example/forum/includes/class_core.php on line 271 MySQL Error : Error Number : "Пользователь превысил максимальное количество соединений"Настройки хостинга. Обычно переговоры с хостером тут не спасают, бежать надо... Код: Invalid SQL: [тут какой-то запрос] MySQL Error : MySQL server has gone away В ошибке сказано, что MySQL server ушёл... за пивом...© не отвечает.Варианты решения: смотреть на запрос и на время появления ошибки.Если ошибки с таким текстом валятся пачками, систематически и примерно в одно и то же время суток, а запросы все разные, выяснить у хостера, чем занимается сервак в это время. Может, бекапится - это как раз чаще всего бывает - и тогда сам запрос значения не имеет, проблему решаем с хостером. (вариации на тему "соседний сайт лежит под ддосом" тоже решаем с хостером)Если ошибку вызывает в разное время суток один и тот же запрос/скрипт - анализировать запрос/скрипт Код: Invalid SQL: [тут какой-то запрос] MySQL Error : Lost connection to MySQL server during query Error Number : 2013 Во время выполнения запроса соединение с MySQL server было потеряноОшибка очень близка к описанной выше, gone awayАнализировать запрос: может, там действительно такой паровоз запрашивается, что он физически не успевает выполниться или ему памяти не хватает Код: MySQL Error : Can't find file: '.\путь=Имя_Таблицы.frm' (errno: 24) Error Number : 1017 Невозможно открыть файлПричины могут быть разнымиКак правило, такая шибка появляется периодически и, в общем, почти не мешает работе форумафайл (временно) недоступенпричины:- превышение допустимой нагрузки на сервер- "холодный" рестарт сервераОбращайтесь к хостеру, шлите ему текст ошибки и пояснение, что она возникает именно периодически, пусть принимает меры... если сервер не рестартили, пусть смотрит логи по нагрузкеПодробно о такой ошибке - в этом посте http://vbsupport.org/forum/showpost....4&postcount=13 Код: Invalid SQL: UPDATE language SET (дальше какой-то текст...) MySQL Error : Got a packet bigger than 'max_allowed_packet' bytes Как правило, такую ошибку получают счастливые обладатели 4ки, если язык форума - утфпричина: этот (для 4ки в УТФ) языковой пакет чуток больше 2Мба дефолтные настройки на хостингах, "максимальный размер пакета MySQL", как правило, как раз 2Мбвот в ошибке об этом и сказано: пакет больше, чем можно скормить за разРешение: увеличить 'max_allowed_packet' = = = = = Ошибки таблиц = = = = = Код: Invalid SQL: [тут какой-то запрос] MySQL Error : Table 'Имя_Таблицы' is marked as crashed and should be repaired В ошибке сказано, что таблица "Имя_Таблицы" помечена как "поломатая" и должна быть починенаАдминка - Обслуживание - Восстановить/оптимизировать таблицы - отметить нужную таблицу и выполнить операцию. Обычно этого достаточно.Если такая ошибка появляется иногда, редко, то можно особо не беспокоиться. "Редко" в моём понимании - раз в полгода/годЕсли же такие ошибки сыпятся систематически - то есть, постоянно "ломаются" таблицы - нужно принимать меры. Причин может быть много, версия/настройки mysql, память на сервере, кривые скрипты. Помогает попинать хостера. Или сменить. Код: MySQL Error : Can't open file: 'Имя_Таблицы.MYI' (errno: 145) по сути, ошибка 145 - это описанная выше "Table was marked as crashed and should be repaired"однако невозможность открыть файл - это уже системная ошибка, и если стандартное "Восстановить/оптимизировать таблицы" не помогает, обращаемся к хостеру. Код: Invalid SQL: [тут запрос] MySQL Error : Table 'Имя_Таблицы' doesn't exist В ошибке сказано, что таблица "Имя_Таблицы" не существуетВарианты:1. Отсутствует штатная таблица.Как узнать, штатная это таблица или нет? - откройте файл mysql-schema.php из папки install и посмотрите.Случай не такой уж экзотический, как кажется на первый взгляд. Лечение: Админка - Обслуживание - Восстановить/оптимизировать таблицы - посмотреть, указанная таблица выводится в списке? Как это ни парадоксально, но она может там выводиться и восстановить+оптимизировать через админку может помочь.Нет в списке? - идём в ПМА - phpmyadmin - и смотрим... варианты повреждений могут быть очень разными, тут всё индивидуально. Если у таблицы повредилось имя - вправляем.Если таблица отсутствует всего одна, и это не одна из жизненно необходимых таблиц, а что-то типо datastore, deletionlog, editlog, moderatorlog, strikes - привела реальные примеры того, с чем лично сталкивалась - создаём таблицу вручную. Как? - откройте всё тот же файл mysql-schema.php, найдите код создания нужной таблицы, скопируйте его и выполните SQL-запрос, можно через админку, можно через ПМА. В случае с datastore может оказаться недостаточно просто создать пустую таблицу, тогда следует воспользоваться tools.php из папки do_not_uploadОдновременно думаем о причине, по которой могла исчезнуть таблица: глюк? неосторожность? сбой на хостинге? Был случай, когда при попытке очистить таблицу strikes её просто удалили (и не заметили...))Если таблиц вдруг отсутствует несколько - это очень серьёзный повод задуматься.Если отсутствуют или насмерть изуродованы таблицы forum, post, thread, ... - то есть те, которые бессмысленно создавать пустыми - путь один, поднимать бэкап. И очень серьёзно подумать о безопасности и смене хостера.2. Вы ещё помните, о какой ошибке речь?Ошибка MySQL : Table 'Имя_Таблицы' doesn't existВы посмотрели mysql-schema и не обнаружили там таблицы, которая doesn't exist.Вывод: таблица создавалась и запрашивается каким-то хаком.Вариант первый: Вы как раз сейчас ставите/обновляете какой-то хак, который должен был создать таблицу, и по какой-то причине не создал.Лечение: уверены, что всё сделали по инструкции? Хак совместим с Вашей версией vB и mysql'а? Открыть сам хак и посмотреть код установки - там присутствует код создания таблицы? - если нет, то фтопку хак (хотя все мы периодически ошибаемся и что-то забываем...) Если Вам этот хак жизненно необходим, создавайте таблицу вручную или обращайтесь к разработчику.Даже если справились сами, не поленитесь сообщить разработчику о проблеме, пусть пофиксит для будущих поколений.Особо обратите внимание вот на что: бывает, что таблица создаётся хаком с учётом наличия префиксов таблиц, а запрашивается - без префикса, и наоборот.Словарик: CREATE TABLE - создать таблицуALTER TABLE - изменить (уже существующую) таблицуDROP TABLE - удалить таблицуREPAIR TABLE - "починить" таблицуTRUNCATE TABLE - очистить таблицу Вариант второй: Нет, Вы сейчас ничего не ставите. "Та были какие-то хаки, что-то когда-то я поудалял, хто ж теперь вспомнит..." Ай, как нехорошо) Вам - в эту тему: http://vbsupport.org/forum/showthread.php?t=32396Вариант третийNEW !!! Если сразу после установки хака получаем ошибку MySQL Error : Table 'Имя_Таблицы' doesn't existи в ошибке указана таблица от свежеустанавливаемого хака,это может означать следующую комбинацию факторов:в хаке проставлено подавление вывода ошибок БД;+ у вас MySQL 5.1.7 и выше+ в хаке в коде инсталляции прописан TYPE=MyISAMэтот синтаксис не поддерживается новыми версиями MySQLничего страшногооткройте хак (продукт)найдите <installcode> - и далее код создания таблицы (или нескольких таблиц)найдите текст TYPE=MyISAM (он в конце создания каждой таблицы) и замените слово TYPE на ENGINEа ещё лучше, если Вы точно знаете, что у Вас MySQL 5.1.7 и выше, открыть продукт до установки и посмотреть= = =Совершенно аналогично, как Table doesn't exist, может отсутствовать столбец в таблице Код: MySQL Error : Unknown column 'Имя' in 'field list' Код: MySQL Error : Unknown column 'Имя' in 'where clause' рекомендации те же, что и для Table doesn't exist= = =Если при установке хака получаем ошибку Код: Invalid SQL: CREATE TABLE Имя_Таблицы MySQL Error : Table 'Имя_Таблицы' already exists скорее всего, этот хак уже был однажды установлен и недо-удалён, Вам опять же в эту тему: http://vbsupport.org/forum/showthread.php?t=32396вероятность того, что разные хаки создают таблицу с тем же именем, достаточно мала, но исключать её не стоит. Если Вы уверены, что ни Вы, ни Ваши со-админы никогда не ставили этот хак, займитесь поисками, откуда взялась таблица с таким именем.NEW !!! Ошибка при установке vBadvanced CMPS Если при установке вБА получаем всё ту же ошибку Код: MySQL Error : 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' at line ... Error Number : 1064 открыть файл admincp/vbacmps_install.phpнайти PHP код: $db->reporterror = 1; $enginevar = 'ENGINE'; if (version_compare(MYSQL_VERSION, '4.0.18', '<')) { $enginevar = 'TYPE'; } // ##### Insert Tables и удалить или закомментировать строки PHP код: if (version_compare(MYSQL_VERSION, '4.0.18', '<')) { $enginevar = 'TYPE'; } ==== Код: Invalid SQL: INSERT IGNORE INTO session [и какие-то данные] MySQL Error : Table 'session' is full В ошибке говорится о заполнении таблицы сессийобычно при такой ошибке залогиниться нельзя, в админку зайти - тожеЛечение: зайти в ПМА - phpmyadmin - и очистить таблицу session. Очистить, а не удалить!После этого зайти в админку и проверить выполнение запланированных заданий. Таблица должна очищаться по крону. Для того, чтобы крон срабатывал, необходимо, чтобы в шаблоне (footer) присутствовала переменная $cronimageЕсли переменной в шаблоне нет - возвращайте немедленно. Кроме того, внимательно прочтите этот пост http://vbsupport.org/forum/showpost....3&postcount=94 и, пока не ушли далеко от ПМА, проверьте БД на наличие временных таблиц = = = = = Прочие ошибки = = = = = Код: MySQL Error : 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 [далее описание, что именно использовано и где] Error Number : 1064 Чаще всего возникает при использовании хаков. Не обязательно хак "плохой", не торопитесь ругать кодера.Особенно тяжело ловить такие ошибки, если они порождены сочетанием хаков. Протестировать все возможные комбинации при отладке хака - физически нереально.Лечение: смотреть и анализировать всё: сам запрос, скрипт, реферрерЛокализовать хак, который вызывает ошибку (выключить все хаки, убедиться, что ошибка пропала, включать хаки по одному)Далее - по желанию/возможностям, лечить проблемный хак или удалитьNEW! Ошибка в многостраничной темеЕсли у вас есть достаточно длинные темы, рано или поздно при попытке зайти в такую тему вы можете нарваться на такую ошибку: Код: Invalid SQL: SELECT post.postid, post.visible, post.userid FROM post AS post WHERE post.threadid = ИД_темы AND post.visible IN (1 ,2 ,0 ) ORDER BY post.dateline; MySQL Error : Got error 134 from storage engine Error Number : 1030 ... Script : домен/showthread.php?t=ИД_темы и тут возможны варианты: тема открывается гостям, но даёт ошибку для юзеровили открывается гостям и юзерам, но недоступна для модеров/админов - тут играет роль выборка и сортировка видимых постов, WHERE post.visible = 1то не паникуйте, тема жива-здорова, но не может открыться: недостаточно места в директории для временных файловлечение: решить проблему с местомвозможно, недостаточно памяти для выполнения выборки постов - увеличить выделенную майсиквелу памятьобращайтесь к хостеру или сисадмину серверакак только тема станет доступна, немедленно закрыть её и открыть дубль-2И запомните: неоднократно высказанные тут предупреждения о необходимости закрывать многостраничные темы - не прихоть и не блажь, а жизненная необходимость.Для ленивых, хак, автоматические закрытие длинных тем: Разделение постов / Thread Splitter Источник ✔ Наши пользователи помогли вам решить проблему? 💸 Наградите их реакцией и поддержите наш форум оформив подписку! 💎 Покупая премиум вы получаете дополнительные возможности и тем самым поддерживаете нас в продолжении! Link to comment Share on other sites More sharing options...
klaypex Posted June 21, 2017 Share Posted June 21, 2017 nice Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now