Próbuję użyć migracji po raz pierwszy w rozwijanym projekcie Propela (więc nie muszę ponownie wstawiać 15 MB danych), ale mam pewne trudności. Wprowadziłem zmiany w moim schemacie i uruchomiłem propel-gen diff
. Po raz pierwszy otrzymałem komunikat o błędzie, że nie mógł zlokalizować pliku buildtime-conf.xml
. Jeszcze go nie stworzyłem (ponieważ nie było to konieczne), ale przeczytaj, że struktura powinna być taka sama jak w przypadku modelu runtime-conf.xml
. Skopiowałem runtime-conf.xml
do buildtime-conf.xml
. I teraz pojawia się następujący błąd:Propel PostgreSQL Migracja nie jest w stanie znaleźć adaptera
[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.
Moi uruchomieniowe i buildtime pliki wyglądać następująco:
<?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>
Mój schemat jest wzdłuż linii to:
<?xml version="1.0" encoding="UTF-8"?>
<database name="project" defaultIdMethod="native">
<table schema="accounts" name="accounts" phpName="Account" package="accounts">
<column />
</table>
</database>
Próbuję zmienić buildtime-conf na <datasource id="testing">
, a błąd został zmieniony na Unable to find adapter for datasource [testing]
. Zatem błąd leży w rzeczywistym pliku buildtime-conf (nie schemacie), o ile wiem. Pomyślałem, że Propel nie może znaleźć adaptera PostgreSQL (nawet jeśli działa dobrze w moim runtime-conf), więc próbowałem zmienić mój adapter na mysql
. Wyszło z tym samym nie może znaleźć błąd adaptera.
Jestem kompletnie zagubiony, myśli?
Aktualizacja: więc byłem w stanie iść do /Propel/runtime/lib/Propel.php
i znajdź linię, gdzie został rzucony wyjątek Unable to find adapter
. Ręcznie zdefiniowałem zmienną, dodając wiersz self::$configuration['datasources'][$name]['adapter'] = 'pgsql'
i to działa. To oczywiście nie jest obecnie przydatne, ponieważ nie będę w stanie zaktualizować Propela bez ponownej zmiany tej zmiany. Zrzuciłem self::$configuration
w Propel.php i jest NULL
, wszelkie pomysły, dlaczego?
Jaką wersję masz uruchomioną? Jeśli jest 1.6, to nadal jest wsparcie afaik - zgłosiłem błąd. Wygląda na to, że migracje nie inicjują połączenia, chociaż w rzeczywistości nie znam ich w ogóle. Ponadto jeśli chcesz skompresować pełny plik schema.xml i build.properties, spróbuję przeprowadzić migrację na moim komputerze, jeśli chcesz (nie wypróbowałeś ich jeszcze, ale zachowaj sens, aby się do niego dostać!). – halfer