Более года назад я создал свои собственные классы баз данных, которые используют PDO, и обрабатывают все готовые, исполняемые и закрывающие соединения. До сих пор эти классы работали отлично.PDO Database Connections Задача
Есть два разных разделителя базы данных, с которыми я берусь, MySQL и MS SQL Express. Я извлекаю идентификатор сотрудника с сервера MySQL и использую его для получения информации о сотрудниках с сервера MS SQL. Есть около 11 тыс. Записей, поступающих с сервера MySQL, и моя программа составляет всего лишь 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 раз до этого и не имея никаких проблем. Кроме того, я тщательно проверил все данные, входящие в запрос, и все выглядит отлично.
Я полагаю, что проблема заключается в том, что существует множество создаваемых соединений, но я пытался закрыть все соединения во многих разных местах, и ничто, кажется, не устраняет проблему. Любая отладочная помощь или предложения будут оценены!
Craig Metrolis
ОБНОВЛЕНО
Хорошо, я нашел эту проблему, я использовал closeCursor после получения запроса и до выполнения. Я вытащил closeCursor и, похоже, исправил эту проблему .... НО ПОЧЕМУ ??? Это не имеет никакого смысла для меня .....
Спасибо за ответ Р. Да, очень странно и то, что я использовал эти запросы почти так же, как эти, во всех моих других программах без проблем. Я также подумал, что если я создаю новые объекты каждый раз, когда closeCursor должен только закрывать sth в текущем объекте. Как вы думаете, я должен просто оставить это? Или лучше, если я найду способ работать? – Metropolis
@Metropolis: Извините, что не отвечал раньше. Курсор должен автоматически закрываться, когда PDOStatement выходит из памяти, поэтому вы должны быть в порядке, оставляя его выключенным. – Powerlord
Круто спасибо за ответ R :) – Metropolis