Link Опубликовано 17 Мая 2004 Жалоба Поделиться Опубликовано 17 Мая 2004 Ну яж не смогу поменять версию скюэл, это хост только может. А вооще реальные такие советики, даже страничку сохранила. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 17 Мая 2004 Жалоба Поделиться Опубликовано 17 Мая 2004 malaya Ну так обратись к хостеру с претензией. Должон пойти навстречу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Melkiy Опубликовано 9 Июня 2004 Жалоба Поделиться Опубликовано 9 Июня 2004 Я чтото так и недопонял до конца, я ещё мелкий и маловато секу, кому нетрудно скажите как решается проблемма "mySQL error: Невозможно открыть файл: 'ibf_forums.MYI'. (ошибка: 145)", скажите что качать, что где прописывать итд, если вам не трудно конечно... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 9 Июня 2004 Жалоба Поделиться Опубликовано 9 Июня 2004 Melkiy Блин, ну почитай же тему вдумчиво, ё-моё Добавлено в [mergetime]1086812523[/mergetime] REPAIR TABLE ibf_forums прямо в пхпАдмин или админцентре, и смени версию МАЙСКЛ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ter Опубликовано 9 Июня 2004 Жалоба Поделиться Опубликовано 9 Июня 2004 На счет версии, и правда, 4.0.15a у меня постоянна дробила индексы.Только не из-за того, что ibr хреново в базу пишет, а то что mysql крайненестабильный был: 040303 16:35:38 mysqld started040303 16:35:46 InnoDB: Startedmysqld got signal 11;This could be because you hit a bug. It is also possible that this binaryor one of the libraries it was linked against is corrupt, improperly built,or misconfigured. This error can also be caused by malfunctioning hardware.We will try our best to scrape up some info that will hopefully help diagnosethe problem, but since we have already crashed, something is definitely wrongand this may fail. key_buffer_size=8388600read_buffer_size=131072max_used_connections=0 Хотя собран он отлично, система stable, все либы вылизаны.Естессно когда он крэшится, про индексы можно забыть. Хотя на 4.0.20 стали варнинги такие вылезать:040609 16:17:12 Aborted connection 74203 to db: 'db' user: 'user' host: `localhost' (Got an error writing communication packets) хотя сокетов более чем достаточно. надо дебаг вкомпилить, посмареть Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 9 Июня 2004 Жалоба Поделиться Опубликовано 9 Июня 2004 ter у меня 4.0.16. База уже 150 мег. 100000 постов. 7000 пользователей. 8000 тем. ( стучит по дереву ) тьфу тьфу ... с тех пор как поставил ни одного рипэйра ... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Terabyte Опубликовано 10 Июня 2004 Жалоба Поделиться Опубликовано 10 Июня 2004 Остап А сколько пользователей в онлайне в среднем? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Остап Опубликовано 10 Июня 2004 Жалоба Поделиться Опубликовано 10 Июня 2004 Terabyte 30-100 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
yog Опубликовано 23 Августа 2004 Жалоба Поделиться Опубликовано 23 Августа 2004 А интересно закачал файл repair.php. Как ни пробовал через браузер ненаходит его.Оптимизаци и починить средствами mysql пробовал всё ранво пишет Can't open file: 'ibf_posts.MYI'. (errno: 144)Что порекомендуете? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
yog Опубликовано 23 Августа 2004 Жалоба Поделиться Опубликовано 23 Августа 2004 А решилось то просто моя проблема. Есть на хостинге кнопка repare базы. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
s0nik Опубликовано 11 Ноября 2004 Жалоба Поделиться Опубликовано 11 Ноября 2004 Исправление таблиц базыЭто на 2.0.x нормально работает?И есть ли способ вручную вызвать ошибку для проверки? =) Добавлено в [mergetime]1100169251[/mergetime] Или лучше взять этот кусок из 1.3.1 Русского Модифицированного? if ($this->return_die == 1) { $this->error = mysql_error(); $this->error_no = mysql_errno(); $this->failed = 1; return; } $returned_error=mysql_error(); $the_error .= "\n\nmySQL error: ".$returned_error."\n"; if(preg_match("/Can't open file: '(.+)\.MYI'. \(errno: 145\)/si",$returned_error,$matches)) { $this->query("REPAIR TABLE ".$matches[1]); $the_error .= "\nОшибка автоматически исправлена. Обновите страницу в браузере\n\n"; } $the_error .= "mySQL error code: ".$this->error_no."\n"; $the_error .= "Date: ".date("l dS of F Y h:i:s A"); $out = "<html><head><title>Invision Power Board Database Error</title> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Angus2 Опубликовано 25 Ноября 2004 Жалоба Поделиться Опубликовано 25 Ноября 2004 Вот добавил однако оповещение PM Администраторам...Интересно - корректно ли ? Блок рассылки взял из Отправки массовых сообщений группам.Собственно, меня интересует - верно ли использованы функции, ибо ни разу еще не делал так...============================= // Repair tables if indexes are broken - BEGINif ( mysql_errno() == 1016 ){$QueryID = mysql_query("SHOW TABLES", $this->connection_id)or die("SQL Error! Can't handle the HANDLER for Tables! Please contact administrator");$SQLRow = array();$TableList = array();while ( ! ( ( $SQLRow = mysql_fetch_row($QueryID) ) === false ) ) {$TableList[] = $SQLRow[0];}$listing = "";foreach($TableList as $TableName) {mysql_query("REPAIR TABLE $TableName", $this->connection_id)or die("SQL Error! Please contact administrator");$listing .= $TableName ." - Repaired. \r\n";}// Сюда вставляем сообщение Администраторам что произошел авторемонт.//+---------------------------------------// Sending the mail//+---------------------------------------$contents = $std->txt_stripslashes("Произошел автоматический ремонт таблицы <br>".$listing); @set_time_limit(1200); require "./sources/lib/emailer.php"; $this->email = new emailer(); $masspm_query = $DB->query("SELECT id, name, view_pop FROM ibf_members WHERE mgroup=4); while ($masspm=$DB->fetch_row($masspm_query)){ $db_string = $DB->compile_db_insert_string( array ('member_id' => $masspm[id],'msg_date' => time(),'read_state' => $track_id,'title' => $std->txt_stripslashes("Робот - починяльщик сообщает"),'message' => str_replace( "\r\n", "\n", $contents),'from_id' => $MEMBER['id'],'vid' => 'in','recipient_id' => $masspm[id], ) ); $DB->query("INSERT INTO ibf_messages (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")");$new_id = $DB->get_insert_id();unset($db_string); //----------------------------------------------------- $DB->query("UPDATE ibf_members SET "."msg_total = msg_total + 1, " ."new_msg = new_msg + 1, " ."msg_from_id='" . $MEMBER['id'] . "', "."msg_msg_id='" . $new_id . "', "."show_popup='" . $masspm['view_pop'] . "' "."WHERE id='" . $masspm['id'] . "'");} if (!headers_sent()) {header("Location: ".$_SERVER['REQUEST_URI']);} else {die("Error! Please reload page...");}}// Repair tables if indexes are broken - END Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 27 Ноября 2004 Автор Жалоба Поделиться Опубликовано 27 Ноября 2004 Ну так то оно так...Но правильнее было бы:а) $DB-> на $this-> потому как в одном классе работаем.б) $listing .= $TableName ." - Repaired. \r\n"; зачем делать \r\n если потом 'message' => str_replace( "\r\n", "\n", $contents) Тогда уж сразу $listing .= $TableName ." - Repaired. \n";в) $contents = $std->txt_stripslashes("Произошел автоматический ремонт таблицы <br>".$listing); имеет ли смысл тут слеши убирать, я не знаю. Поидее им там взяться неоткуда. $contents = "Произошел автоматический ремонт таблицы <br>".$listing; было бы логичнее в таком случае.г) require "./sources/lib/emailer.php"; $this->email = new emailer();вообще не понял для чего используется класс отправки email. Убрать.д) 'title' => $std->txt_stripslashes("Робот - починяльщик сообщает"), по аналогии с п. в)е) ну и переменная $MEMBER['id'], вообще не ясно откуда берется. Если только зарегистрировать отдельного пользователя - робота, и жестко прописать его id в $MEMBER['id'], то тогда смысл появляется. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 27 Ноября 2004 Жалоба Поделиться Опубликовано 27 Ноября 2004 Кстати я тоже занимался программированием запросов внутри самого же модуля DB, так вот чего я понял, что $this->query() и $this->fetch_row() не катят Пришлось делать через АПИ, mysql_query and etc.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 27 Ноября 2004 Автор Жалоба Поделиться Опубликовано 27 Ноября 2004 с чего им там не катить? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Aqua Опубликовано 5 Декабря 2004 Жалоба Поделиться Опубликовано 5 Декабря 2004 Пару советов Так по доброте душевной. Написали мы тут кодик полезный , так как у вас инвижн боард то он как раз и для вас подойдет. Иногда базы рушаться от одновременных запросов, вы наверняка с этим сталкивались. Так как у нас клиентов на хостинге много, у всех возникают вопросы к хостерам, что мол с моей базой ? а ну чините, а мы то тут и не причем. Так вот надоело это всё , вообщем смотрите. Данная ошибка связана с недоработками в скриптах Invision Board, не выполняющего блокировку таблиц при выполнении нескольких пследовательных операций записи в базу данных. В связи с этим, при одновременном постинге двоих или более пользователей форума происходит нарушение целостности индексных файлов MySQL. Для исправления данной ошибки, необходимо выполнить переиндексацию таблиц. Для этого в Invision Board предусмотрена специальная функция в панели администратора (http://www.softboard.ru/admin.php) - SQL Management -> mySQL Toolbox -> Repair selected tables. Для автоматизации данного процесса, можно изменить скрипты Invision Board, чтобы они автоматически выполняли переиндексацию при ошибке mySQL # 1016 - такой обработчик можно поместить в файл www/sources/Drivers/mySQL.php, в метод fatal_error() класса db_driver: После строк if ($this->return_die == 1) { $this->error = mysql_error(); return TRUE; } поместить следующий код: // Repair tables if indexes are broken - BEGIN if ( mysql_errno() == 1016 ) { $QueryID = mysql_query("SHOW TABLES", $this->connection_id) or die("SQL Error! Please contact administrator"); $SQLRow = array(); $TableList = array(); while ( ! ( ( $SQLRow = mysql_fetch_row($QueryID) ) === false ) ) { $TableList[] = $SQLRow[0]; } foreach($TableList as $TableName) { mysql_query("REPAIR TABLE $TableName", $this->connection_id) or die("SQL Error! Please contact administrator"); } if (!headers_sent()) { header("Location: ".$_SERVER['REQUEST_URI']); } else { die("Error! Please reload page..."); } } // Repair tables if indexes are broken - ENDКак насчет IPB v2? Какой файл нужно отредактировать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 5 Декабря 2004 Жалоба Поделиться Опубликовано 5 Декабря 2004 GiV ну вот не получилось.! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Angus2 Опубликовано 6 Декабря 2004 Жалоба Поделиться Опубликовано 6 Декабря 2004 Вот, полночи угробил на эту модификацию... не фурычит Итак, что делал. В указанное выше место вставлял как и полагалось: // Сюда вставляем сообщение Администраторам что произошел авторемонт. //+--------------------------------------- // Sending the mail //+--------------------------------------- $contents = "Произошел автоматический ремонт таблицы <br>".$listing; $tit = "Робот - починяльщик сообщает"; $me = 4; \\ 4 - это id, от имени которого производится рассылка @set_time_limit(1200); $masspm_query = $DB->query("SELECT id, name, view_pop FROM ibf_members WHERE mgroup='4'); \\ mgroup=4 - это группа администраторов. while ($masspm=$DB->fetch_row($masspm_query)) { $db_string = $DB->compile_db_insert_string( array ( 'member_id' => $masspm[id], 'msg_date' => time(), 'read_state' => '0', 'title' => $tit, 'message' => $contents, 'from_id' => $me, 'vid' => 'in', 'recipient_id' => $masspm[id], ) ); $DB->query("INSERT INTO ibf_messages (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")"); \\ < ==== (*) Ошибку сюда выдает $new_id = $DB->get_insert_id(); unset($db_string); //----------------------------------------------------- $DB->query("UPDATE ibf_members SET ". "msg_total = msg_total + 1, " . "new_msg = new_msg + 1, " . "msg_from_id='" . $MEMBER['id'] . "', ". "msg_msg_id='" . $new_id . "', ". "show_popup='" . $masspm['view_pop'] . "' ". "WHERE id='" . $masspm['id'] . "'"); } Итак, в этом варианте мне выдает напротив (*) ошибку T_STRINGУбей бог, не могу понять где тут могут быть разные типы данных...При этом - остается непонятным, почему 'member_id' => $masspm[id], и 'recipient_id' => $masspm[id], идут без кавычек в индексе, типа $masspm['id']. Если ставлю кавычки то выдается БОЛЬШАЯ ДЛИННАЯ ОШИБКА про какое то замещение и пробелы в переменных Изменение класса $DB на $this ничего не меняет (ну и вроде как не должно раз ошибка на этом этапе возникает)... Короче - запуталася я, есть возможность объяснить проще ?Поясняю, этот кусок кода я взял из Модификации MASS_PM, и в полностью данном виде код работает в нужном месте...Чего ему надо тут ????? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hamburg Опубликовано 10 Декабря 2004 Жалоба Поделиться Опубликовано 10 Декабря 2004 При клике на профиль пользователя появляется такое сообщение об ошибкеmySQL query error: SELECT p.pid, p.post, t.tid, t.title, f.name, f.id FROM ibf_posts AS p LEFT JOIN ibf_topics AS t ON (p.topic_id=t.tid) LEFT JOIN ibf_forums AS f ON(t.forum_id=f.id) WHERE author_id=3 AND f.id IN (1,2,3) ORDER BY p.post_date DESC LIMIT 0, mySQL error: You have an error in your SQL syntax near '' at line 4 mySQL error code: Date: Friday 10th of December 2004 05:09:32 PM Модификация форума: IPB v1.3 Final © 2003 BesTFileZ.Net & IBR Team Через phpMyAdmin исправлял все таблицы, анализ таблиц показывает ОК.В PHP и MySQL не силён. Кто может подсказать в чём проблема? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Еve Опубликовано 10 Декабря 2004 Жалоба Поделиться Опубликовано 10 Декабря 2004 Кто может подсказать в чём проблема?Ошибка синтаксиса. Открой файл, и проверь правильность этого запроса. Скорее всего, где-то очепятка... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 11 Декабря 2004 Жалоба Поделиться Опубликовано 11 Декабря 2004 ORDER BY p.post_date DESC LIMIT 0,тут нету значения Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hamburg Опубликовано 12 Декабря 2004 Жалоба Поделиться Опубликовано 12 Декабря 2004 Спасибо! Я убрал эту запятую, которая прямо после нуля, и.... "поехало". Спасибо!ORDER BY p.post_date DESC LIMIT 0".$INFO[latest_amount]); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 16 Декабря 2004 Жалоба Поделиться Опубликовано 16 Декабря 2004 Hamburg так ты неправильно сделал.Он теперь у тебя берёт $INFO[latest_amount] первых постов Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hamburg Опубликовано 16 Декабря 2004 Жалоба Поделиться Опубликовано 16 Декабря 2004 Хм...if(!isset($INFO[latest_amount])) $INFO[latest_amount] = 3; $DB->query("SELECT p.pid, p.post, t.tid, t.title, f.name, f.id FROM ibf_posts AS p LEFT JOIN ibf_topics AS t ON (p.topic_id=t.tid) LEFT JOIN ibf_forums AS f ON(t.forum_id=f.id) WHERE author_id=".$member['id']." AND f.id IN ($forums) ORDER BY p.post_date DESC LIMIT 0,".$INFO[latest_amount]);Это исходный код, именно с этой запятой (по крайней мере таким я его скачал на bestfilez.net)После долгих поисков и изучения ткаих запросов я решил поэкспериментировать... и убрав запятую стало открыватся окно с пользовательской инфо...выше я писал, что PHP и MySQL пока для меня (опыт программирования был в начале 90х) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
mpkspb Опубликовано 16 Января 2005 Жалоба Поделиться Опубликовано 16 Января 2005 После использования скриптика repair.php работа форума восстановилась, только в Админ-панель не заити теперь, точнее на саму страницу admin.php, пишет: mySQL query error: DELETE FROM ibf_admin_sessions WHERE RUNNING_TIME < 1105906731 mySQL error: Incorrect key file for table: 'ibf_admin_sessions'. Try to repair itmySQL error code: Date: Sunday 16th of January 2005 10:18:51 PM В чем может быть дело?, помогите пожалуйста.Версия форума 1.3 русский модифицированный. Вот результат работы скрипта относительно таблицы ibf_admin_sessions:Проверка таблицы ibf_admin_sessionsТаблица Действие Тип Сообщениеforum_ichip.ibf_admin_sessions check warning Table is marked as crashedforum_ichip.ibf_admin_sessions check warning Found 120 deleted space. Should be 0forum_ichip.ibf_admin_sessions check warning Found 1 deleted blocks Should be: 0forum_ichip.ibf_admin_sessions check warning Found 2 parts Should be: 1 partsforum_ichip.ibf_admin_sessions check status OKОптимизация таблицы ibf_admin_sessionsforum_ichip.ibf_admin_sessions optimize status Table is already up to dateЗаранее очень благодарен. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.