Проблема с подключением к базе данных PDO - PullRequest
0 голосов
/ 28 мая 2010

Более года назад я создал свои собственные классы базы данных, которые используют PDO и обрабатывают все подготовительные, выполняемые и закрывающие соединения. Эти классы прекрасно работали до сих пор.

Есть два разных сервера баз данных, с которых я берусь: MySQL и MS SQL Express. Я получаю идентификатор сотрудника с сервера MySQL и использую его для получения информации о сотрудниках с сервера MS SQL. С сервера MySQL поступает около 11 тыс. Записей, и моя программа пробивает только 1200, а затем вылетает с ошибкой, подобной следующей.

Connection failed (odbc:Driver=FreeTDS;Servername=MSSQLExpress;Database=SMDINC) Class (PDOException)
SQLSTATE[08001] SQLDriverConnect: 0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source

Кажется, что программа не может подключиться к источнику данных, но она выполняет тот же самый запрос примерно 30 раз до этого и не имеет проблем. Кроме того, я тщательно проверил все данные, поступающие в запрос, и все выглядит нормально.

Я полагаю, что проблема может заключаться в том, что создается много соединений, но я пытался закрыть все соединения во многих разных местах, и кажется, что ничего не решает проблему. Любая помощь отладки, или предложения будут оценены!

Крейг Метролис

ОБНОВЛЕНО

Хорошо, я нашел проблему, я использовал closeCursor после подготовки запроса и перед выполнением. Я вынул closeCursor и, похоже, исправил эту проблему .... НО ПОЧЕМУ? Это не имеет никакого смысла для меня .....

1 Ответ

0 голосов
/ 28 мая 2010

PDOStatement :: closeCursor () освобождается соединение с сервером так, чтобы другие операторы SQL могут быть выданы, но оставляет заявление в состоянии это позволяет выполнить его снова.

Другими словами, это закрывало ваше соединение с вами.

Это все еще не объясняет, почему он прошел 1200 записей, прежде чем возникла проблема.

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