Ошибка соединения с БД MySQL
Я разбирался с Flash Builder (бета 2) и пытался подключить некоторые службы PHP. Это просто через FB при условии отсутствия икоты. Но я икнул уже несколько дней.
Я запускаю последнюю установку WAMP только с одной модификацией, упомянутой ниже (новая установка) на WinXPSP2.
Подводя итог, я настроил очень простую таблицу БД, первичный ключ + 4 других поля. У меня есть пример службы PHP, настроенный для общения с MySQL и получения данных строки таблицы. Однако, независимо от того, пытаюсь ли я подключиться через FB или просто запускаю test.php, который использует тот же сервис PHP, я получаю следующие ошибки от MySQL:
**Warning: mysqli_connect() [function.mysqli-connect]: MySQL server has gone away in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Warning: mysqli_connect() [function.mysqli-connect]: Error while reading greeting packet. PID=1024 in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2006): MySQL server has gone away in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Fatal error: Maximum execution time of 60 seconds exceeded in C:\wamp\www\PHPService\services\EmployeeService.php on line 27**
Как и предлагалось на форуме Adobe FB, я попытался увеличить значение по умолчанию 'max_execution_time = 30;' в php.ini до 120, 240, а затем 360 в этом порядке. Никакой сигары.
Этот URL: http://www.codefinger.co.nz/_etc/mySQLError.zip содержит;
- Таблица базы данных MySQL, которую я использую
- EmployeeService.php, как видно из приведенной выше ошибки
- test.php, в той же папке, что и EmployeeService.php
Любая помощь приветствуется, я не разбираюсь в MySQL или PHP, все предоставленное взято из примеров онлайновых материалов от Adobe, все, что я сделал, это поместил в свои собственные данные БД и измененную версию EmployeeService.php, чтобы отразить данные, которые я пытаюсь получить из MySQL.
Если вы хотите помочь, а я не включил некоторые журналы жизненно важных функций или еще что-то, просто кричите и, возможно, дайте мне знать, где я могу найти то, что вам нужно для устранения неполадок.
Ура, - данджа
[править] Я должен отметить, что в 'EmployeeService.php' вы увидите, что я закомментировал настройки имени пользователя /pswd, просто чтобы проверить, если это было проблемой, я пробовал с правильными кредитами, хотя (закомментированными). Я также временно отключил брандмауэр во время тестирования, пожав плечами.
3 ответа
Проблема заключается в подключении к вашему серверу MySQL. Вы можете подключиться через phpMyAdmin, правильно? Таким образом, сам MySQL, кажется, подключен правильно
Глядя на ваш код, это выглядит очень подозрительно:
var $server = "localhost";
var $port = "80";
Порт 3306 - это порт MySQL по умолчанию, но вы, возможно, настроили свой запуск для чего-то другого, я не знаю. Но запуск MySQL через порт 80 был бы довольно глупым, так как это порт для HTTP. Я предполагаю, что у вас есть веб-сервер (Apache), работающий на этом порту, так как вы упомянули WAMP. Если вы не изменили Apache для запуска на другом порту, что было бы еще более странно.
Порт 80 - это http, порт 3306 (по умолчанию) - это то место, где MySQL прослушивает, если вы говорили php подключиться к серверу mysql через порт 80, то это объясняет, почему вы не можете подключиться. Удаление аргумента порта и использование его по умолчанию объясняет, почему это работает.
После долгих попыток отладки, проб и ошибок я обнаружил, что виновником является включение "номера порта" при подключении к базе данных MySQL.
Убрав порт arg, все заработало.
Аргумент порта, очевидно, существует по какой-то причине, поэтому, вместо того, чтобы оставаться в неведении, кто-нибудь может сказать мне, почему номер порта (значение 80) вызывает эти ошибки? PHPinfo сообщает мне, что прослушивается порт 80, и я даже попытался сделать это с выключенным брандмауэром.