сервер perl DBI mysql исчез — не проблема с таймаутом

#mysql #perl #dbi

#mysql #perl #dbi

Вопрос:

С этим вопросом было много сообщений, поэтому позвольте мне прояснить основные функции:

  • это происходит с perl DBI
  • это происходит с помощью $ db-> do(‘удалить строки из таблицы, где условие’)
  • это происходит сразу после создания объекта db, т.Е. Оператор никогда не выполняется успешно, никогда
  • это происходит со сценарием, который отлично работает на моей рабочей станции, но не работает на сервере
  • версии mysql на обеих машинах одинаковы: mysql версии 14.14, дистрибутив 5.7.15, для Linux (x86_64) с использованием оболочки EditLine

Я всегда получаю эту ошибку:

DBD :: mysql:: db не удалось выполнить: сервер MySQL исчез при (eval 18)[/usr/share/perl5/perl5db.pl:646] строка 2

DBI_TRACE=1 не раскрывает ничего конкретного

Что может быть причиной этого?

Заранее большое спасибо.

Комментарии:

1. Вы пробовали запускать mysqlcheck ?

2. Спасибо за совет. Я проверю эту функцию. Однако он используется для проверки таблиц, и в данном случае это был сервер, с которым я не мог связаться.

3. «Сервер исчез» означает, что вы потеряли соединение после того, как оно уже было успешно установлено. Это может произойти при сбое mysqld. Существует множество возможных причин сбоев, но одна из них, которую я видел, — это повреждение таблицы, которое можно исправить с помощью mysqlcheck.

4. У меня была эта ошибка много раз раньше, и повторное подключение всегда решало ее до сих пор. Странная вещь в это время заключается в том, что ошибка возникает сразу после подключения, даже через несколько миллисекунд. MySQL не разбился, он все еще был жив и здоров, и таблицы не были повреждены. Я читал, что MySQL не обрабатывает localhost так же, как 127.0.0.1. Я не знаю почему, но мой опыт подтверждает это. Внесение этого изменения решило проблему. «localhost» работал на Ubuntu, но мне пришлось использовать «127.0.0.1» на CentOS. Это все, что я знаю.

5. re: разница между 127.0.0.1 и localhost: если вы подключаетесь к localhost mysql, будет использоваться соединение с сокетом unix, а если вы подключаетесь к 127.0.0.1, mysql будет использовать TCP / IP вместо этого.

Ответ №1:

Решаемая. Я сменил хост с localhost на 127.0.0.1, и это сработало.