Я пытаюсь использовать миграцию в первый раз в моем проекте разработки Propel (так что мне не нужно вставлять 15 МБ данных), но у меня есть некоторые трудности. Я внес изменения в свою схему и выполнил propel-gen diff
. Сначала я получил сообщение об ошибке, что он не смог найти мой файл buildtime-conf.xml
. Я еще не сделал ни одного (поскольку это не было необходимо), но прочитайте, что структура должна быть такой же, как и runtime-conf.xml
. Я скопировал runtime-conf.xml
в buildtime-conf.xml
. И теперь получите следующую ошибку:
[propel-sql-diff] Reading databases structure...
[phingcall] Unable to find adapter for datasource [project].
Execution of target "sql-diff" failed for the following reason: /var/www/project/vendor/propel/propel1/generator/build-propel.xml:317:26: Execution of the target buildfile failed. Aborting.
[phing] /var/www/project/vendor/propel/propel1/generator/build-propel.xml:317:26: Execution of the target buildfile failed. Aborting.
Мои файлы времени выполнения и времени сборки выглядят следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<propel>
<datasources default="project">
<datasource id="project">
<adapter>pgsql</adapter>
<connection>
<dsn>pgsql:host=###.###.###.###;dbname=database</dsn>
<user>USER</user>
<password>PASS</password>
</connection>
</datasource>
</datasources>
</propel>
</config>
Моя схема соответствует следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<database name="project" defaultIdMethod="native">
<table schema="accounts" name="accounts" phpName="Account" package="accounts">
<column />
</table>
</database>
Я попробовал изменить buildtime-conf на <datasource id="testing">
, а ошибка изменилась на Unable to find adapter for datasource [testing]
. Насколько я могу судить, ошибка заключается в фактическом файле buildtime-conf (а не в схеме). Я подумал, что, возможно, Propel не смог найти адаптер PostgreSQL (хотя он отлично работает в моей среде исполнения), поэтому я попытался изменить адаптер на mysql
. Он обнаружил, что не удалось найти ошибку адаптера.
Я полностью потерян, мысли?
Обновление:, поэтому я смог войти в /Propel/runtime/lib/Propel.php
и найти строку, в которой было выбрано исключение Unable to find adapter
. Я вручную определил переменную, добавив строку self::$configuration['datasources'][$name]['adapter'] = 'pgsql'
, и она работает. На данный момент это явно не проверяется, так как я не смогу обновить Propel, не переделывая это изменение. Я сбросил self::$configuration
в Propel.php и это NULL
, любые идеи, почему?