Не удается подключиться к серверу MySQL на локальном хосте (10055) - PullRequest
1 голос
/ 02 февраля 2012

Я запускаю три perl-скрипта последовательно.Каждый из них подключается к базе данных Mysql несколько раз и либо выбирает, либо обновляет информацию, содержащуюся в базе данных.После запуска этих трех сценариев примерно 20 раз (и подключения / отключения от базы данных гораздо больше, чем это), я получаю сообщение «Не удается подключиться к серверу MySQL на« localhost »(10055).

IЯ читал в другом месте, что я могу заставить его подключиться к базе данных, используя mysql_auto_reconnect = 1, однако я не совсем уверен, что это проблема.Сервер Mysql на моем компьютере все еще подключен в случае сбоя программы - мне не нужно его перезагружать.Я хотел понять, почему он это делает, и также я не совсем уверен, как вставить «mysql_auto_reconnect = 1», поскольку, когда я делаю это, он говорит мне, что DBI-> connect с использованием синтаксиса старого стиля устарел.

my $dbh_m= DBI->connect("dbi:mysql:XXX","root","XXX","mysql_auto_reconnect=1")

или die ("Ошибка при выборе Trans: $ DBI :: errstr");

Нужно ли мне также записывать это при каждом подключении к базе данных?(Помещение этого в одно из соединений не решает проблему, я все еще получаю сообщения об ошибках от всех остальных - он не запускается снова, а затем снова приводит к сбою).Это проблема со мной, когда я подключался / отключался от базы данных много раз?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 02 февраля 2012
DBI->connect("dbi:mysql:XXX", "root", "XXX", { mysql_auto_reconnect => 1 })
1 голос
/ 02 февраля 2012

Какое сообщение об ошибке вы получаете?

Вероятно, вам следует сделать что-то вроде:

my $dbh;
{
    local $@;
    do {
        eval { 
            $dbh = DBI->connect("dbi:mysql:XXX", "root", "XXX", { mysql_auto_reconnect => 1 })
        };
        if ( $@ ) {
            warn "Error: $DBI::errstr\n";
            warn "Trying to reconnect in 5 sec.\n";
            sleep 5;
        }
    } while ($@);
}

На случай, если база данных не отвечает или слишком много подключений.

0 голосов
/ 16 июня 2016

Как исправить ошибку MySQL 10055 Чтобы решить эту проблему, вам нужно увеличить количество динамических портов.Выполнение следующих команд даст вам 50000 портов для динамического использования.

В Windows Server 2008 R2 Открыть командную строку

Введите следующее
netsh int ipv4 set dynamicport tcp start=10000 num=50000
Нажмите Enter

Введите следующее
netsh int ipv4 set dynamicport udp start=10000 num=50000
Нажмите Enter

Введите следующее
netsh int ipv6 set dynamicport tcp start=10000 num=50000
Нажмите Enter

Введите следующее
netsh int ipv6 set dynamicport udp start=10000 num=50000
Нажмите Enter

0 голосов
/ 03 февраля 2012

Может быть, вы не отключаетесь от mysql, когда ваш скрипт завершает работу?

Это истощает ресурсы в mysql.Пожалуйста, проверьте журналы mysql для подсказки.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...