проблема с подключением к MySql DB (PHP) - PullRequest
0 голосов
/ 05 мая 2010

У меня есть следующий код PHP для подключения к моей БД:

<?php
ob_start();
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");

?>

Однако я получаю следующую ошибку:

Warning: mysql_connect() [function.mysql-connect]: [2002] A 
connection attempt failed because the connected party did not (trying 
to connect via tcp://localhost:3306) in C:\Program Files (x86)\EasyPHP-
5.3.2i\www\checklogin.php on line 11

Warning: mysql_connect() [function.mysql-connect]: A connection 
attempt failed because the connected party did not properly respond 
after a period of time, or established connection failed because 
connected host has failed to respond. in C:\Program Files (x86)\EasyPHP-
5.3.2i\www\checklogin.php on line 11

Fatal error: Maximum execution time of 30 seconds exceeded in 
C:\Program Files (x86)\EasyPHP-5.3.2i\www\checklogin.php on line 11

Я могу добавить БД / таблицы через phpmyadmin, но не могу подключиться с помощью PHP.

Вот скриншот моей страницы phpmyadmin: enter image description here В чем может быть проблема?

Ответы [ 4 ]

4 голосов
/ 05 мая 2010

Проверьте следующее:

  1. Работает ли MySQL?
  2. Существует ли какой-либо брандмауэр, который может блокировать ваш компьютер от принятия соединений с MySQL через порт 3306?
  3. MySQL прослушивает порт 3306 или он изменился на что-то нестандартное?
  4. Странно, но попробуйте изменить с localhost на 127.0.0.1

По сути, ошибки, которые вы получаете, означают, что он не может подключиться к серверу. Он отправляет запрос на localhost:3306 и только так долго ждет ответа. он не получает его, что означает, что запрос либо заблокирован (брандмауэр), либо проигнорирован (MySQL не работает и / или прослушивает другой порт)

Если phpMyAdmin поставляется с установкой MySQL, возможно, он настроен на использование соответствующего порта

1 голос
/ 19 сентября 2012

ха, у меня тоже была эта проблема, теперь я исправляю ее, меняя номер порта, например, "find.db.13344.hostedfind.com:3306". до этого мое соединение пыталось получить доступ к "find.db.13344.hostedfind.com:3307", поэтому он выдал мне эту ошибку Предупреждение: mysql_connect () [function.mysql-connect]: [2002] Попытка подключения не удалась, поскольку подключенная сторона этого не сделала (пытается подключиться через tcp: // localhost: 3306).

0 голосов
/ 20 мая 2014

Я также заметил эту проблему в Linux-версии xampp с журналом MySSQL 5.6.12, работающим по сети. Кроме того, вопрос, заданный на форуме MySQL (http://forums.mysql.com/read.php?52,294772,294772), похож на этот, но не получил удовлетворительного ответа.

Что я заметил, так это, вероятно, из-за нестабильной работы сети или слишком большого числа подключений mysql от других разработчиков в сети, одновременно подключающихся к серверу базы данных, и из-за того, что номер порта занят в течение некоторого времени , Это не часто связано с настроенным временем соединения, ни с максимальным временем выполнения, ни с неправильным именем пользователя / паролем и т. Д.

Удивительно, но тот же сценарий, тот же пароль и та же сеть позволяют одному и тому же серверу нормально работать со второй попытки - без необходимости что-либо исправлять.

Следовательно, это должны быть ваши кратковременные нестабильные колебания сети (или занятые соединения mysql), которые включаются и выключаются, и ваш скрипт пытался подключиться к серверу, когда сеть была отключена в течение очень короткого времени.

Это предполагаемый ответ из личного опыта, связанный с этой ошибкой, может быть неточным.

Но если сообщение об ошибке является постоянным, вам действительно нужно что-то сделать.

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

Может быть, ваш MySQL не использует TCP для localhost. Пожалуйста, попробуйте

$host='/tmp/mysql.sock';

или любой другой сокет, который он может использовать.

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