Я делаю страницу под строительство, которая размещается на моем NAS Synology.
Посетители могут подписаться на электронную почту и получать информацию, когда сайт будет доступен.
У меня проблемы с базой данных и PHP-кодом, которые добавляют электронное письмо в базу данных.
Если имя сервера является localhost
, я получаю следующую ошибку:
SQLSTATE [HY000] [2002] Нет такого файла или каталога
Когда это 127.0.0.1
или 127.0.0.1:3306
, я получаю ошибку ниже:
SQLSTATE [HY000] [2002] Соединение отклонено
Я еще не нашел решение на Stackoverflow.
Здесь PHP-код:
<?php $servername = "localhost"; $username = "id"; $password = "password"; $dbname = "dbname"; try { $conn = new PDO( "mysql:host=$servername;dbname=$dbname", $username, $password ); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $sql = "INSERT INTO email ( email ) VALUES ( '$email' )"; $conn->exec( $sql ); echo "New record created successfully"; } catch( PDOException $e ) { echo $sql . "<br>" . $e->getMessage(); } $conn = null;
Почему я получаю эту ошибку?
SQLSTATE[HY000] [2002] Connection refused
что:
у вас нет прав или привилегий для доступа к базе данных с этим пользователем,
ваши параметры базы данных либо неверны, либо
на сервере, где у вас нет базы данных; он может быть отключен.
У меня есть ответ, соединение было отклонено, потому что я установил mariaDB на мою синологию, которая меняет порт по умолчанию для MySQL с 3306 по 3307.
У меня такая же проблема:
SQLSTATE [HY000] [2002] Соединение отклонено
при попытке подключиться к базе данных MariaDB, работающей на моем NAS Synology, с php. Предоставление только имени пользователя и пароля
$ conn = new PDO ("mysql: host = $ servername; dbname = $ dbname", $ username, $ password);
не работает, указав номер порта, решение, найденное в другом месте, также не работает:
$ conn = new PDO ("mysql: host = $ servername; port = 3307; dbname = $ dbname", $ username, $ password);
Что работает (для меня):
$ conn = new PDO ("mysql: host = $ servername: 3307; dbname = $ database", $ login, $ password);
Имя порта отображается при открытии окна свойств MariaDB 10 из главного меню на NAS Synology. По-видимому, спецификация «port = 3307» не имеет никакого эффекта, но также не дает сообщения об ошибке.