Команда doctrine: database: create не будет заполнять структуру таблиц, а создаст базу данных в вашем менеджере баз данных, например MySQL.Чтобы заполнить структуру базы данных, используйте команду doctrine:schema:create
для первоначального создания структуры и команду doctrine:schema:update --force
, когда вы хотите обновить структуру после внесения некоторых изменений в аннотации.
Как вы упомянули, вам нужно настроить некоторые параметры в Symfony2 для правильной работы Doctrine.Эти параметры необходимо установить в файле конфигурации config.yml, который вы можете найти в папке app / config стандартного дистрибутива Symfony2.Вот пример конфигурации, которую нужно добавить в файл config.yml:
# Doctrine Services Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: localhost
port: 3396
dbname: dbname_dev
user: dbname_dev
password: yourpassword
logging: "%kernel.debug%"
orm:
auto_generate_proxy_classes: "%kernel.debug%"
default_entity_manager: default
entity_managers:
default:
mappings:
AcmeBundle: ~
Первая часть конфигурации, часть dbal, используется для настройки информации о подключении к вашей базе данных.Я бы посоветовал вам сначала протестировать соединение с корневой учетной записью вашей базы данных, а затем, когда все работает хорошо, изменить настройки, чтобы использовать выделенного пользователя.Таким образом, вы уверены, что у вас нет проблем с привилегиями или других проблем, которые могут быть связаны с выделенным пользователем.
Вторая часть, часть orm, используется для настройки отображенияваши объекты в базу данных.Эта часть требуется, если вы хотите, чтобы Symfony2 автоматически заполнял структуру базы данных.Замените AcmeBundle на имя вашего пакета в приведенном выше примере, чтобы включить функциональные возможности orm в вашем проекте.
Кроме того, команда Symfony2 работает над упрощением конфигурации, и я думаю, что теперь есть более простой способнастроить параметры Доктрины.Я предлагаю вам пример, который я сейчас использую с Beta1 Symfony2.
И, наконец, чтобы ответить на ваш вопрос, я думаю, что лучше всего позволить Symfony2 заниматься созданием и обновлением структуры базы данных.Одним из аргументов в пользу этого было бы то, что вам не нужно поддерживать файл SQL, связанный со структурой базы данных.Эта информация косвенно хранится в аннотациях вашей сущности, поэтому вам просто нужно изменить аннотации и вызвать команду doctrine:schema:update --force
, чтобы обновить структуру.Имея это в виду, вы не должны создавать структуру заранее, а позволить Symfony2 создать ее для вас.
Вот рабочий процесс для проверки того, что все работает:
- Обновите ваш config.yml (в app / config), включив в него параметры конфигурации Doctrine
- Откройте приглашениеи перейдите в корневую папку дистрибутива Symfony (где вы видите папки app, src, vendor и web)
- Выполните
php app/console doctrine:database:create
, чтобы создать базу данных в MySQL - Выполните
php app/console doctrine:schema:create
для создания структуры базы данных - Проверьте в MySQL, что база данных и структура были созданы правильно
Надеюсь, что это поможет.
С уважением,
Matt