Forum Webscript.Ru

Общие => Базы данных => Тема начата: evgkuz от 27 Апреля 2003, 04:51:06

Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 27 Апреля 2003, 04:51:06
Из-за чего может появляться ошибка :
"Can\'t open file: \'d_anketa.MYI\'. (errno: 145)" ???
Название: errno: 145 - Что это за ошибка?
Отправлено: Stas от 27 Апреля 2003, 14:54:49
может его просто нет ? А как там с правами ? Может у тебя файл запаролся, может машину неверно перезапустили и он был открыт ?
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 27 Апреля 2003, 16:30:07
Запрос покеж.
Название: errno: 145 - Что это за ошибка?
Отправлено: Maniac от 28 Апреля 2003, 17:07:12
evgkuz
Попробуй полечить таблицу. Если не поможет, читай здесь (http://www.mysql.com/documentation/mysql/bychapter/manual_Problems.html#Not_enough_file_handles)
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 19 Мая 2003, 02:19:42
Alexandr
INSERT INTO d_anketa SET  sex=\'2\',  looksex=\'1\',  for1=\'1\',  for2=\'2\',  for3=\'3\',  for4=\'4\',  for6=\'6\',  for8=\'8\',
myname=\'Аделя\',  email=\'argoada@yandex.ru\',  pass=\'zzz\',  ch_about=\'зеленоглазая, стройная брюнетка\',
placetime=\'2003-09-16\',  height=\'168\',  weight=\'48\',  body=\'2\',  eyes=\'4\',  hair=\'2\',  hairtype=\'1\',  zodiak=\'4\',
marital=\'1\',  child=\'1\',  education=\'2\',  url=\'http://\',  religion=\'5\',  ch_basic=\'темпераментна\',  ch_dream=\'быть
счастливым человеком\',  ch_pos=\'целеустремленность\',  ch_neg=\'слабохарактерность\',  ch_title=\'никогда не здаваться\',
ch_company=\'компанию\',  in_smoking=\'0\',  in_alcohol=\'0\',  in_food=\'фрукты\',  in_cook=\'обожаю\',  in_drink=\'мартини\',
in_rest=\'путешествовать\',  in_liter=\'поэзия\',  in_movie=\'комедии\',  in_job=\'студентка\',  in_about=\'люблю слушать хорошую
музыку, играть на форьепиано\',  need=\'сильного, целеустремленного человека\',  city=\'26\',  birthday=\'1982-07-05\',
data=\'2003-05-19\'
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 19 Мая 2003, 02:21:35
Maniac
А что значит "полечить таблицу" ?
Название: errno: 145 - Что это за ошибка?
Отправлено: Alone от 19 Мая 2003, 13:49:11
evgkuz
У меня вернуло вот что для такой ошибки (perror 145) :
145 = Table was marked as crashed and should be repaired

Цитировать
evgkuz:
А что значит "полечить таблицу" ?

http://www.mysql.com/doc/ru/REPAIR_TABLE.html
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 19 Мая 2003, 19:27:01
Я востановил эту таблицу, но так и не понял из-за чего это происходит уже второй раз, с интарвалов в 1 месяц ?

Аудитория сайта около 100 человек, так что это уж точно не из-за перегрузки.

Это происходит из-за запросов или сервера ?
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 20 Мая 2003, 18:54:40
Цитировать
evgkuz:
но так и не понял из-за чего это происходит

У меня подобное случалось на 4.0.10-gamma (в смысле таблица тоже требовала REPAIR).
Из-за множественного UPDATE\'а из одной и той же таблицы.

Сейчас сижу на 4.0.11a-gamma - на хостинге и 4.0.12-max - дома, такого глюка не замечено, но и там и там (на 3.23.хх не проверял) есть др. глюк:
после ALTER TABLE .... таблица вообще выносится и восстановлению не подлежит.

Если интересно могу написать.
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 20 Мая 2003, 19:40:55
Alexandr

У меня раз в день выполняется этот запрос:
mysql_query(" UPDATE d_anketa SET today=\'0\' ");

Это из-за него у меня глючит таблица ???

"4.0.10-gamma", "4.0.11a-gamma" и "4.0.12-max" - это версии MySQL ?

Если Вам не трудно напишите пожалуйста.
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 22 Мая 2003, 09:18:34
Цитировать
evgkuz:
Это из-за него у меня глючит таблица ???

Не из-за него, а
Цитировать
Alexandr:
Из-за множественного UPDATE\'а из одной и той же таблицы.

т.е. например,
UPDATE detail_tree t, detail_tree t2 SET t.cat_name=t2.cat_name WHERE t.id IN (55, 58) AND t2.id=10;
говоря простым языком необходимо скопировать значение cat_name из строки 10 в строки 55 и 58

Цитировать
evgkuz:
"4.0.10-gamma", "4.0.11a-gamma" и "4.0.12-max" - это версии MySQL ?

ес-но
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 22 Мая 2003, 20:23:48
На сервере хостигна стоит MySQL 4.0.12, т.е. теоретически всё должно работать нормально, т.к. я обычно не использую "ALTER TABLE".
Название: errno: 145 - Что это за ошибка?
Отправлено: Maniac от 22 Мая 2003, 23:05:22
evgkuz
Цитировать
evgkuz:
теоретически всё должно работать нормально

Теоретически. Все-таки четвертая версия мускула еще недостаточно обкатана. Ты, кстати, техподдержке хостинга этот вопрос не задавал?
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 26 Мая 2003, 12:57:47
При применении REPAIR TABLE d_anketa таблица востанавливается и выдаёт следующие сообщения:
1) info   Wrong block with wrong total length starting at 149824
2) info   Found block that points outside data file at 150472
3) warning   Number of rows changed from 369 to 368
4) status   OK
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 27 Мая 2003, 18:27:13
Цитировать
Maniac:
Ты, кстати, техподдержке хостинга этот вопрос не задавал?

Нет.
Цитировать
Alexandr:
У меня подобное случалось на 4.0.10-gamma

Цитировать
Alexandr:
Сейчас сижу на 4.0.11a-gamma - на хостинге и 4.0.12-max - дома, такого глюка не замечено


Есть более злостный глюк, который таблицу вообще из строя выводит и ничего не помогает.
Вот про него я хочу написать багрепорт, но думаю не смогу его по-англицки описать
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 27 Мая 2003, 19:05:39
http://www.autodealer.ru/mysql_bug.php
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 28 Мая 2003, 00:38:38
Alexandr, а в чем собственно глюк?
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 28 Мая 2003, 08:47:47
А не заметила, что случилось после ALTER\'а (обрати внимание 2-е последние табилицы: полетели названия первых 2-х столбцов и + данные из cat_name, prim_col_name)
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 28 Мая 2003, 12:16:12
дай структуру твоей таблицы (это значит вывод SHOW CREATE TABLE, а не EXPLAIN) для тестирования.
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 28 Мая 2003, 16:29:48
Гляди.
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 28 Мая 2003, 17:36:02
и где она?
я что-то пропустила?
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 28 Мая 2003, 17:57:32
2-я таблица сверху - то что было,
3-я снизу - что с ней случилось после

ALTER TABLE tmp MODIFY id TINYINT(2) UNSIGNED NOT NULL, MODIFY parent_id TINYINT(1) UNSIGNED NOT NULL, MODIFY detail VARCHAR(37) NOT NULL, MODIFY cat_name ENUM(\'\',\'ISKRA AVTOELECTRIKA, Словения\',\'KOIVUNEN OY, Финляндия\',\'MAPCO AUTOTECHNIK GMBH, ФРГ\',\'OCAP S.P.A., Италия\',\'QUINTON HAZELL AUTOMOTIVE, Англия\') NOT NULL, MODIFY prim_col_name ENUM(\'\',\'V и A\',\'V и kW\',\'Карбюратор\',\'Номер BOSH\',\'Номер детали\',\'Примечание\',\'Размеры\') NOT NULL
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 28 Мая 2003, 19:36:21
Alexandr, извини, ты внимательно читаешь что пишут?
повторяю:

Цитировать

дай структуру твоей таблицы (это значит вывод SHOW CREATE TABLE, а не EXPLAIN) для тестирования.
Название: errno: 145 - Что это за ошибка?
Отправлено: Alexandr от 29 Мая 2003, 11:10:51
fidget, извини, ты внимательно смотрела страницу?
повторяю:
Цитировать
Alexandr:
2-я таблица сверху - то что было,
3-я снизу - что с ней случилось после


Вот ещё раз ссылка на всякий:
http://www.autodealer.ru/mysql_bug.php

Ладно вот ещё на всякий:
Запрос: SHOW CREATE TABLE tmp
Количество записей: 1Table Create Table
tmp CREATE TEMPORARY TABLE `tmp` ( `id` tinyint(2) unsigned NOT NULL default \'0\', `parent_id` tinyint(1) unsigned NOT NULL default \'0\', `detail` char(37) NOT NULL default \'\', `cat_name` char(33) NOT NULL default \'\', `prim_col_name` char(12) NOT NULL default \'\' ) TYPE=MyISAM


Запрос: SHOW CREATE TABLE tmp
Количество записей: 1Table Create Table
tmp CREATE TEMPORARY TABLE `tmp` ( `Љk ‹k ` tinyint(2) unsigned NOT NULL default \'0\', `‹k ` tinyint(1) unsigned NOT NULL default \'0\', `` varchar(37) NOT NULL default \'\', `cat_name` enum(\'\',\'ISKRA AVTOELECTRIKA, Словени\',\'\',\'KOIVUNEN OY, Финл\',\'нди\',\'\',\'MAPCO AUTOTECHNIK GMBH, ФРГ\',\'OCAP S.P.A., Итали\',\'\',\'QUINTON HAZELL AUTOMOTIVE, Англи\',\'\') NOT NULL default \'\', `prim_col_name` enum(\'\',\'V и A\',\'V и kW\',\'Карбюратор\',\'Номер BOSH\',\'Номер детали\',\'Примечание\',\'Размеры\') NOT NULL default \'\' ) TYPE=MyISAM
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 31 Мая 2003, 10:37:06
ой, извини плз, совсем невнимательная и нервная стала .. пораменять работу :-)

протестировала - у меня все ок с названиями столбцов. правда я на 4.0.13 тестировала.
Название: errno: 145 - Что это за ошибка?
Отправлено: evgkuz от 31 Мая 2003, 10:58:45
Таблица валиться именно после INSERTов и UPDATEов, но только, примерно, раз в месяц.

Может ли повлиять на эту ошибку "Can\'t open file: \'d_anketa.MYI\'. (errno: 145)" то, что я использую так много полей в одной таблице? (см. ниже)

INSERT INTO d_anketa SET  sex=\'1\',  looksex=\'2\',  for9=\'9\',  myname=\'Рамиль\',  email=\'ramil_rus@mail.ru\',  pass=\'scorpion\',
ch_about=\'Просто хочу девушку\',  placetime=\'2003-09-27\',  height=\'175\',  weight=\'60\',  body=\'0\',  eyes=\'0\',  hair=\'0\',
hairtype=\'4\',  zodiak=\'8\',  marital=\'1\',  child=\'1\',  education=\'2\',  url=\'http://\',  religion=\'0\',  ch_basic=\'\',
ch_dream=\'\',  ch_pos=\'\',  ch_neg=\'\',  ch_title=\'\',  ch_company=\'\',  in_smoking=\'3\',  in_alcohol=\'5\',  in_food=\'\',
in_cook=\'\',  in_drink=\'\',  in_rest=\'\',  in_liter=\'\',  in_movie=\'\',  in_job=\'\',  in_about=\'\',  need=\'\',  city=\'19\',
birthday=\'1986-01-01\', data=\'2003-05-30\'

Есть ли предел количеству полей в одной таблице? Если есть, то сколько.


Может ли повлиять на эту ошибку то, что я делаю запрос INSERT не в том порядке, в котором расположены поля в БД ?
Название: errno: 145 - Что это за ошибка?
Отправлено: Rel от 03 Июня 2003, 09:25:22
или я совсем не шарю, но разве можно делать так?:

INSERT INTO d_anketa SET sex=\'1\', looksex=\'2\',[.PHP]

я привык делать так:
[PHP]INSERT INTO table(field1,field1,... ) VALUES(\'$val1\', \'$val2\',...)

а SET вроде бы только к update\'y относится
Название: errno: 145 - Что это за ошибка?
Отправлено: fidget от 03 Июня 2003, 12:50:07
Rel, можно.