Я начал изучать Symfony2, и я хотел использовать Doctrine для создания таблицы в моей базе данных postgres. Я установил postgres и выполнил следующие шаги:
sudo -i -u postgres
Я создал пользователя с именем: test и type superuser createuser --interactive
createdb test
Я создал пользовательский тест с проверкой пароля
adduser test
И мои параметры.yml в symfony2 выглядят следующим образом:
parameters: database_driver: pdo_pgsql database_host: 127.0.0.1 database_port: null database_name: test database_user: test database_password: test mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null
Также у меня есть сущность:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
*/
protected $name;
/**
* @ORM\Column(type="decimal", scale=2)
*/
protected $price;
/**
* @ORM\Column(type="text")
*/
protected $description;
}
Затем я набрал эту оценку в терминале:
php app/console doctrine:generate:entities AppBundle
И я получил это предупреждение:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[28000] [1045] Access denied for us
er 'test'@'localhost' (using password: YES)
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[28000] [1045] Access denied for user 'test'@'localhost' (using pas
sword: YES)
[PDOException]
SQLSTATE[28000] [1045] Access denied for user 'test'@'localhost' (using pas
sword: YES)
Что я могу сделать для решения этой проблемы?
РЕДАКТИРОВАТЬ:
Я понял, что я подключен к базе данных mysql, и я не знаю почему. Как я могу это изменить?
Один из наших разработчиков столкнулся с этой проблемой на прошлой неделе.
Ваши параметры.yml кажутся хорошими, но если у вас есть "стандартный" config.yml, он не указывает database_driver
#app/config/config.yml
[...]
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%" # <---- Add this line ;)
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
[...]
config.yml
и, в частности, ту часть, где вы конфигурируете соединение dctdoctrine
. Вы можете использовать официальную документацию, чтобы увидеть, что делает конфиг.