SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.12.2007 14:30:29

iCode
Участник
Зарегистрирован: 26.05.2007
Сообщений: 12

Lost connection to mysql server during query

Всем привет!

MySQL 5.0.18; InnoDB.

Возникает ошибка, когда работаю с таблицей из двух столбцов: smallint(6) и MEDIUMBLOB.
Таблица небольшая: строк < 100; объем < 10 Мб.
max_allowed_packet = 16M.
Самое странное для меня то, что эта ошибка возникает через раз!!! Тупо сижу в EMS'овском менеджере и жму обновить записи таблицы - то есть записи, то нет, то есть, то нет.....просто бред какой-то, ничего не понимаю.....

Есть какие-нибудь мысли по этому поводу?

Неактивен

 

#2 21.12.2007 15:11:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Сильно загруженный сервер/медленная сеть/урезанный в ресурсах сервер.

Можете поставить net_read_timeout и net_write_timeout побольше и посмотреть,
что изменится.

Неактивен

 

#3 26.12.2007 10:43:43

iCode
Участник
Зарегистрирован: 26.05.2007
Сообщений: 12

Re: Lost connection to mysql server during query

Поставил
  net_read_timeout=30
  net_write_timeout=60
На всякий случай даже поставил
  interactive_timeout=28800
  wait_timeout=28800

Но это не помогло....причём, я так понял, эти значения в секундах....но ошибка всё равно появляется...раньше, чем успевает пройти 30 секунд!
Запрос такой: "SELECT * FROM blob_tbl WHERE id = 224;"
Когда запрос проходит, то он проходит за десятки милисекунд, то есть проблема не в нагрузке на сервер, к тому же у меня сервер и клиент стоит на одной машине.
Я посылаю запрос с EMS MySQL Manager'а и из своей проги на дельфях, используя DirectMySQL, так что проблема мне кажется в сервере....возможно в настройках.....хотя я пробовал переустанавливать сервер....

Может быть таблицы глючные....может испортились как-то в процессе использования....как можно проверить это? Я слышал есть какой-то repair? Может это поможет?

А сейчас есть какие-нибудь мысли?)

Отредактированно iCode (26.12.2007 10:50:16)

Неактивен

 

#4 26.12.2007 11:12:32

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Lost connection to mysql server during query

Попробуйте
а. REPAIR TABLE blob_tbl
б. ALTER TABLE blob_tbl ENGINE=InnoDB;

Какая версия MySQL?

Неактивен

 

#5 26.12.2007 12:52:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

А ключик на поле id есть?

Неактивен

 

#6 26.12.2007 13:03:22

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Lost connection to mysql server during query

Еще посмотрите в логе не перезапускается ли сервер при в это время

Неактивен

 

#7 26.12.2007 15:10:45

iCode
Участник
Зарегистрирован: 26.05.2007
Сообщений: 12

Re: Lost connection to mysql server during query

rgbeast написал:

а. REPAIR TABLE blob_tbl

Таблица InnoDB не поддерживает команду REPAIR

rgbeast написал:

б. ALTER TABLE blob_tbl ENGINE=InnoDB;
Какая версия MySQL?

Таблицы уже InnoDB, я писал это в первом сообщении...там же написано, что версия MySQL - 5.0.18.


paulus написал:

А ключик на поле id есть?

Вот DDL, который мне сгенерил EMS:
CREATE TABLE `blob_tbl` (
  `id` smallint(6) unsigned NOT NULL auto_increment,
  `body` mediumblob,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0 ROW_FORMAT=COMPACT;


paulus написал:

Еще посмотрите в логе не перезапускается ли сервер при в это время

А где это смотреть? Где логи лежат?

Неактивен

 

#8 26.12.2007 15:26:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Я бы на месте MySQL обиделся на такие ключики smile Второй ключ можно смело выкинуть.

А вообще, такой запрос должен отрабатывать моментально при условии стабильной работы
базы. Попробуйте обновить MySQL до нормальной версии какой-то?

Неактивен

 

#9 26.12.2007 16:02:18

iCode
Участник
Зарегистрирован: 26.05.2007
Сообщений: 12

Re: Lost connection to mysql server during query

paulus написал:

Я бы на месте MySQL обиделся на такие ключики smile Второй ключ можно смело выкинуть.

Я тоже думал, что это какая-то ненужная фигня...
Её EMS сам добавил.

paulus написал:

А вообще, такой запрос должен отрабатывать моментально при условии стабильной работы
базы. Попробуйте обновить MySQL до нормальной версии какой-то?

И работал....не знаю, что случилось....в том-то и дело!
До какой версии ты бы посоветовал обновить?

Неактивен

 

#10 26.12.2007 16:34:53

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

5.0.45

Неактивен

 

#11 10.01.2008 03:26:33

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Lost connection to mysql server during query

Я тоже думал, что это какая-то ненужная фигня...
Её EMS сам добавил.

Не сам, а по вашему указанию.

когда создавали поле вы поставили несколько галок. В частности Unique и Primary. А это не одно и тоже.
Primary всегда уникален, поэтому по ВАШЕМУ запросу Unique EMS создал дополнительный уникальный индекс, что в вашем DDL и наблюдается.

Отредактированно Shopen (10.01.2008 03:26:55)

Неактивен

 

#12 16.01.2008 12:10:16

iCode
Участник
Зарегистрирован: 26.05.2007
Сообщений: 12

Re: Lost connection to mysql server during query

Проблема всё ещё не решена.
Я поставил MySQL 5.0.45, убрал вторые ключики (на всякий случай во всех таблицахsmile)
Кстати, смотрел на эту таблицу в MySQL Adminstrator'е и заметил странную вещь!
Catalogs -> Schema tables: жму постоянно Refresh и смотрю на Rows для apex_db.blob_tbl (это моя таблица), а там то 250, то 170, то ещё что-то...хотя на самом деле в таблице 35 записей!!! Ну я по крайней мере был в этом уверен, потому что именно столько показывает EMS и MySQL Administrator, если открыть таблицу для просмотра записей.

Вот DDL из EMS'а:
CREATE TABLE `blob_tbl` (
  `id` smallint(6) unsigned NOT NULL auto_increment,
  `body` mediumblob,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8 CHECKSUM=1;

Отредактированно iCode (16.01.2008 13:46:27)

Неактивен

 

#13 16.01.2008 19:08:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

То, что показывает SHOW TABLE STATUS - это оценка количества строк,
она может варьироваться немного smile

Напишите какой-нибудь тестовый сценарий, который несколько раз выбирает
строки подряд в одном соединении, и потом в разных. Оно не будет отдавать
результат?

Неактивен

 

#14 29.05.2008 11:28:21

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: Lost connection to mysql server during query

Возникла такая же проблема, но в другой ситуации - получил данные, затем через некоторое время пытаюсь получить ещё раз то же самое, вываливается ошибка.
Посмотрел здесь - http://lists.mysql.com/plusplus/6299.
Там есть упоминание про отсоединение неактивных коненктов - idle sessions. Подскажите, пожалуйста, как это включить/выключить. Охота поэкспериментировать и в этом направлении.

Отредактированно Lem0nti (29.05.2008 11:28:42)

Неактивен

 

#15 15.06.2008 01:28:53

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Lost connection to mysql server during query

См. переменные wait_timeout и interactive_timeout http://dev.mysql.com/doc/refman/5.1/en/ … it_timeout

Неактивен

 

#16 25.09.2008 15:50:08

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: Lost connection to mysql server during query

Хотелось бы поднять темку, авось пригодится кому-нть...
Узнал по этому поводу, что также такое может случаться когда запрос возвращает большое количество данных, превышающее объём заданный переменной max_allowed_packet. Ряд экспериментов это подтверждает, но, честно говоря, стопроцентного понимания ещё нет smile.

Неактивен

 

#17 08.05.2010 14:35:28

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Lost connection to mysql server during query

Устроим сегодня день археолога smile

По непонятной мне причине стали отваливаться запросы... В БД есть несколько сотен таблиц, в цикле отправляем запросы с COUNT(*) по определённой клаузе для каждой таблицы. В итоге не всегда удаётся достучаться до всех таблиц, получаем "Lost connection to mysql server during query". Раньше вместо COUNT(*) была выборка самих данных и всё работало как часики, но вот переделали скрипты на подсчёт самих записей и всё, теперь сервер периодически отваливается. Отваливается в основном на одной и той же таблице, но не всегда на ней и не всегда вообще отваливается smile В phpMyAdmin проблемные запросы выполняются без проблем.

Будут ли какие-либо идеи по решению проблемы? ПамажЫте кто чем сможет))


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#18 08.05.2010 15:04:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Ааааа!! Надо срочно закрыть все темы старше года! big_smile

MySQL тут не при чем, ошибку возвращает клиентская библиотека. Возвращает
в двух случаях: или обрыв связи, или наступил таймаут, который Вы в новой
версии скриптов стали устанавливать.

Неактивен

 

#19 08.05.2010 15:19:37

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Lost connection to mysql server during query

Если закрыть старые темы, то просто будут появлятся такие же новые)))

Я бы понял, если б ошибка была постоянно, а так она то есть, то нет... В скриптах таймауты наоборот снимаем, ни к чему они smile Дело в том, что в цикле есть только один слип на 30 секунд, который включается только в определённых ситуациях. Собственно этих ситуаций пока не возникало smile Да и что там 30 секунд-то, у нас часами коннекты висят и все живы и здоровы. А тут прям ума не приложу... Скрипт, как правило, обрабатывается за несколько секунд.

Может ли быть проблема из-за нехватки памяти? Кстати, по памяти сразу вопрос: когда юзаем Memory табличку на 250мб данных, то не редко возникает ошибка нехватки памяти. Собственно вопрос в том, как можно увеличить используемую память для MySQL? Это делается в пределах настройки мускля или на уровне ОС? Смотрели тесты, в момент возникновения ошибки свободная память ещё имеется.


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#20 08.05.2010 15:42:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Таймаутов много, таймауты бывают разные. Попробуйте, например, тот же запрос
выполнить обычным клиентом MySQL — он отработает, скорее всего, без ошибок.

Если не секрет — сценарии на питоне? smile

Думаю, что Вы упираетесь все же в max_heap_table_size smile

Неактивен

 

#21 08.05.2010 17:58:47

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Lost connection to mysql server during query

Запросы в другой среде естественно обрабатываются без проблем smile
Сценарии на пхп tongue

А max_heap_table_size при чём? smile Несчастный COUNT порождает ошибку, при чём не всегда)) Я вот заметил, что мускль отваливается на таблицах с большим количеством данных, а на клаузном поле, оказалось, даже индекса нет... Проставил индексы на нескольких таблицах, теперь сбои начинаются на других))

Это всё хорошо, но я по прежнему не вижу логики. Раньше запрос возвращал сами данные и ошибок не возникало, а сейчас просто считает кол-во записей, что иногда вызывает ошибку. Вроде наоборт кеши должны меньше памяти требовать и т.п.


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#22 08.05.2010 18:01:29

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Lost connection to mysql server during query

А про таймауты - скрипт же пару секунд всего отрабатывает, о каких таймаутах может идти речь?)))


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#23 11.05.2010 12:01:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Да, в PHP действительно не ставятся таймауты smile

Интересует следующее: выживает ли сервер (\s, смотреть uptime), отрабатывают
ли запросы нормально с той же машинки, но из консольного клиента?

Неактивен

 

#24 16.05.2010 21:03:41

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Lost connection to mysql server during query

Да, сервер не рестартится, коннекты, висящие в слипе, так и остаются висеть в слипах, всё работает как и прежде. Те же запросы в phpMyAdmin отрабатывают успешно.

Вот плохо когда полтергейтс какой-то получается, ни одной внятной причины :\


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#25 17.05.2010 13:16:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Lost connection to mysql server during query

Если из других приложений работает, то логично предположить, что дело в
конкретном приложении. Предлагаю порыть его smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson