В настоящее время я разрабатываю небольшой проект с использованием Propel ORM (v2.00-dev), и я решил, что попробую использовать Vagrant впервые.
Я настроил vagrant-сервер для разрешения внешних подключений MySQL и создал следующий файл конфигурации, чтобы мне не приходилось подключаться к серверу ssh каждый раз, когда я хочу запустить propel из командной строки
{
"propel": {
"paths": {
"outputDir": "./propel/",
"phpDir": "./propel/model/",
"sqlDir": "./propel/sql",
"phpConfDir": "./propel/conf"},
"database": {
"connections": {
"project-local": {
"adapter": "mysql",
"dsn": "mysql:host=localhost;dbname=scotchbox",
"user": "root",
"password": "root",
"attributes": []
},
"project-remote": {
"adapter": "mysql",
"dsn": "mysql:host=192.168.33.10;dbname=scotchbox",
"user": "root",
"password": "root",
"attributes": []
}
}
},
"runtime": {
"defaultConnection": "project-local",
"connections": ["projeect-local","project-remote"]
},
"generator": {
"defaultConnection": "project-remote",
"connections": ["project-remote","project-local"]
}
}
}
в паре с schema.xml
лайк:
<database name="project-remote">
<!-- lots of tables in here -->
</database>
Теперь это работает отлично. Приложение работает с использованием project-local
и когда я запускаю propel из командной строки, он переключается на project-remote
как и ожидалось.
Когда я пытаюсь бежать propel diff
однако я получаю следующую ошибку:
[PDOException]
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
Это говорит о том, что при запуске diff, Propel пытается использовать runtime
настройки соединения, а не generator
из них. Есть ли способ, которым я могу изменить это? Я проверил документацию по настройке и ничего не вижу в настройке соединения.
Я также заметил, что diff
команда имеет --connection
аргумент, но я не могу найти информацию об этом, и я не могу понять, как его использовать. Я пробовал:
propel diff --connection=project-remote
а также
propel diff --connection="project-remote"
Оба из которых приводят к следующей ошибке
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
The path "propel.database.connections..adapter" cannot contain an empty value, but got "".
Итак, есть ли у кого-нибудь идеи о том, как указать соединение для Propel Diff (и, возможно, мигрировать)?
Задача ещё не решена.
Других решений пока нет …