SirShadow Опубликовано 7 Июня 2007 Жалоба Поделиться Опубликовано 7 Июня 2007 Значицца нашел таблицу, нашел проблему, но как ее решить особо пока не представляю. Время: Thu, 07 Jun 2007 14:37:54 +0400 Код ошибки: 1054 Сообщение сервера: Unknown column 'field_2' in 'field list' IP Адрес клиента: ...... Запрос: UPDATE ibf_pfields_content SET field_1='.......',field_2='' WHERE member_id=264 Репэйр таблиц не помог. Попытался удалить второе доп. поле - разумеется та же самая ошибка... Что с этим можно сделать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ilyxa Опубликовано 11 Июня 2007 Жалоба Поделиться Опубликовано 11 Июня 2007 Люди добрые помогите пож-та решить данную проблему:при нажатии на "Изменить личные данные" в "Личных данных" выскакивает следующее: mySQL query error: UPDATE ibf_users SET land='' WHERE user_id=1 SQL error: Table 'wwwschXXXXru_XXXX.ibf_users' doesn't exist SQL error code: Date: 11.6.2007, 22:33 при нажатии на "Изменить подпись" следующее: mySQL query error: UPDATE ibf_users SET signature='' WHERE user_id=1 SQL error: Table 'wwwschXXXXru_XXXX.ibf_users' doesn't exist SQL error code: Date: 11.6.2007, 22:35 как это исправить Всем отбой Дело было в интеграции с DLE 5.5... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Ney Опубликовано 23 Июля 2007 Жалоба Поделиться Опубликовано 23 Июля 2007 Сам решил проблему... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
rusbest Опубликовано 14 Августа 2007 Жалоба Поделиться Опубликовано 14 Августа 2007 malaya Знаю решение етой проблемьі. у самого недавно такая случалась, столько с таблицой ib_forumsРешении простое.вьіполнить запрос:REPAIR TABLE ibf_postsРЕСПЕКТ!!!!!!!!!!!!!!!!!!!!!Заместо ibf_пост поставил своё!Всё ок! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
kolyapakhomov Опубликовано 22 Августа 2007 Жалоба Поделиться Опубликовано 22 Августа 2007 А что вот это значит? mySQL query error: SELECT * FROM ibf_posts WHERE pid= SQL 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 '' at line 1 SQL error code: Date: 22.8.2007, 12:21 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Alex Truck Опубликовано 30 Августа 2007 Жалоба Поделиться Опубликовано 30 Августа 2007 http://www.sysman.ru/index.php?showtopic=10996 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 11 Декабря 2007 Жалоба Поделиться Опубликовано 11 Декабря 2007 А не подскажите какой код из приведённых лучше всего юзать, или може их можно оба вставлять?Вариант номер один: // 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Вариант номер два (кусок из кода вынут кое как, по быстрому): $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> <style>P,BODY{ font-family:arial,sans-serif; font-size:11px; }</style></head><body> <br><br><blockquote><b>There appears to be an error with the {$INFO['board_name']} database.</b><br> You can try to refresh the page by clicking <a href=\"java script:window.location=window.location;\">here</a>, if this does not fix the error, you can contact the board administrator by clicking <a href='mailto:{$INFO['email_in']}?subject=SQL+Error'>here</a> <br><br><b>Error Returned</b><br> <form name='mysql'><textarea rows=\"15\" cols=\"60\">".htmlspecialchars($the_error)."</textarea></form><br>We apologise for any inconvenience</blockquote></body></html>"; echo($out); die(""); }И вот ещё, правельно ли я обработал следующий код (т.е. тут кто то выкладывал этот код для отсылания письма администратору в случае креша, так вот он он был не рабочий, правельно ли я внёс изменения?):// Repair tables if indexes are broken - BEGIN if ( 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. \n"; } // Сюда вставляем сообщение Администраторам что произошел авторемонт. //+--------------------------------------- // Sending the mail //+--------------------------------------- $contents = "Произошел автоматический ремонт таблицы <br>".$listing; @set_time_limit(1200); $masspm_query = $this->query("SELECT id, name, view_pop FROM ibf_members WHERE mgroup=4"); while ($masspm=$this->fetch_row($masspm_query)) { $db_string = $this->compile_db_insert_string( array ( 'member_id' => $masspm[id], 'msg_date' => time(), 'read_state' => $track_id, 'title' => "Робот - починяльщик сообщает", 'message' => str_replace( "\r\n", "\n", $contents), 'from_id' => $MEMBER['id'], 'vid' => 'in', 'recipient_id' => $masspm[id], ) ); $this->query("INSERT INTO ibf_messages (".$db_string['FIELD_NAMES'].") VALUES (".$db_string['FIELD_VALUES'].")"); $new_id = $this->get_insert_id(); unset($db_string); //----------------------------------------------------- $this->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 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 11 Декабря 2007 Жалоба Поделиться Опубликовано 11 Декабря 2007 Если таблица не починилась, то админ может не прочитать это ПМ. К тому же в таком случае уведомление на мыло не вышлется. Лучше заменить этот кусок на отправку мыла Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 11 Декабря 2007 Жалоба Поделиться Опубликовано 11 Декабря 2007 Меня вообще то бальше интеросует первый вопрос. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 11 Декабря 2007 Жалоба Поделиться Опубликовано 11 Декабря 2007 Меня вообще то бальше интеросует первый вопрос. ИМХО, все варианты автозапуска рипейров таблиц фтопку.http://www.ibresource.ru/forums/index.php?...&pid=296258Если не дай бог будет такая проблема, рискуешь рипейрами не только индексы побить, но и сами таблицы потерять. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DacentGS Опубликовано 11 Декабря 2007 Жалоба Поделиться Опубликовано 11 Декабря 2007 FatCat, у меня не стоит автоматический бекап, я его вручную делаю, так надёжнее. И вот возникает вопрос, если нету автоматического бекапа то остаётся ли актуальным удаление автоматического repair? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 12 Декабря 2007 Жалоба Поделиться Опубликовано 12 Декабря 2007 FatCat, у меня не стоит автоматический бекап, я его вручную делаю, так надёжнее. И вот возникает вопрос, если нету автоматического бекапа то остаётся ли актуальным удаление автоматического repair?Я не большой знаток устройства и функционирования SQL-сервера. ИМХО, рипейр хорош, если посыпались индексы.Если ошибка иная, и десятки посетителей будут чуть ли не одновременно запускать рипейры - хостер спасибо не скажет. В идеале, если бы написать функцию, которая будет реагировать только на эрроры ошибок индекса таблиц, определять в какой таблице побился индекс и запускать рипейр только этих таблиц - при наличии достаточного запаса места на хосте и при не очень высокой посещаемости форума это может быть полезным. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 12 Декабря 2007 Жалоба Поделиться Опубликовано 12 Декабря 2007 FatCat, там в коде выше проверяется error код, так что не при каждой ошибки будет делаться repair. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
TOIIOP Опубликовано 5 Августа 2008 Жалоба Поделиться Опубликовано 5 Августа 2008 как запустить этот скрипт на 2.3.х? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.