Я пытаюсь добраться до моей новой базы данных PGSQL с помощью PHP. Проблема в том, что я получаю ошибку, указанную в заголовке. Когда я пытаюсь подключиться напрямую. Он работает, когда я пытаюсь подключиться PDO, он дает эту ошибку.
Что я проверил:
Убедитесь, что база данных, хост, пользователь, пропуск и порт правильны, используя простой скрипт (показано на рисунке)
Это мой конфигурационный файл для настройки баз данных (я правильно использую 6 баз данных. Поэтому я знаю, что ошибка не в том файле)
"Aeges":{ "pdo_driver":"odbc", "user":"XXXX", "password":"XXXX", "database":"test", "host":"localhost", "port":1233 }, "Postgre":{ "pdo_driver":"pgsql", "user":"XXXX", "password":"XXXX", "database":"ASN", "host":"localhost", "port":5432 } etc..
Это моя функция для получения информации. Я немного очистил его, чтобы было ясно
public static function findAvailableASN() { $Postgre = db\Factory::getInstance()->create('Postgre'); $stmt = $Postgre->prepare("select * from asnregel.asnregel"); if ($stmt->execute()) { return $stmt->fetchAll(\PDO::FETCH_ASSOC); } /* $connect = pg_connect("host=localhost port=5432 dbname=ASN user=XXXX password=XXXX"); if(!$connect) { die("Error in connection: ".pg_last_error()); } $sql = "select * from asnregel.asnregel"; $result = pg_query($connect,$sql); if(!$result) { die("Error in sql query: ".pg_last_error()); } while($row = pg_fetch_array($result)) { echo $row[0].'<br/>'; echo $row[1].'<br/>'; echo $row[2].'<br/>'; echo $row[3].'<br/>'; } pg_free_result($result); pg_close($connect); */ }
Поэтому проблема в том, что первая часть не работает (часть с PDO). Пока прокомментировал (часть без PDO). Какой-то странный?
Кто-нибудь, кто может мне помочь?
Недопустимое имя источника данных
Сообщение об ошибке довольно ясно. Имя источника данных – это строка DSN, которую вы используете в конструкторе PDO. И это кажется недействительным.
Таким образом, нет необходимости проверять php.ini, php_pgsql.dll или пароль – все эти ошибки имеют свои отчетные сообщения об ошибках.
Итак, все, что вам нужно, это исправить вашу строку DSN. Распечатайте свой текущий DSN и сравните его с каноническим, прямо со страницы руководства. Например, для pgsql правильный формат DSN будет подобен
pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
в то время как для всех драйверов плеера правильный формат можно найти в руководстве