Sto provando a utilizzare le migrazioni per la prima volta sul mio progetto Propel in fase di sviluppo (quindi non devo reinserire 15 MB di dati), ma sto avendo alcune difficoltà. Ho apportato le modifiche al mio schema e ho eseguito propel-gen diff
. Ho ricevuto per la prima volta un errore che non è stato in grado di individuare il mio file buildtime-conf.xml
. Non ne avevo ancora creato uno (dal momento che non era necessario), ma ho letto che la struttura doveva essere uguale a runtime-conf.xml
. Ho copiato runtime-conf.xml
in buildtime-conf.xml
. E ora visualizzato il seguente errore:Propel PostgreSQL Migrazione impossibile trovare l'adattatore
[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.
miei runtime e Buildtime file simile al seguente:
<?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>
mio schema è lungo le linee di questo:
<?xml version="1.0" encoding="UTF-8"?>
<database name="project" defaultIdMethod="native">
<table schema="accounts" name="accounts" phpName="Account" package="accounts">
<column />
</table>
</database>
Ho provato a cambiare buildtime-conf a <datasource id="testing">
e l'errore è stato modificato in Unable to find adapter for datasource [testing]
. Quindi l'errore si trova nel vero file buildtime-conf (non nello schema), per quanto posso dire. Ho pensato che forse Propel non riusciva a trovare l'adattatore di PostgreSQL (anche se funziona bene nel mio runtime-conf), quindi ho provato a cambiare il mio adattatore su mysql
. È venuto fuori con lo stesso in grado di trovare l'errore dell'adattatore.
Sono completamente perso, pensieri?
Update: quindi ero in grado di andare in /Propel/runtime/lib/Propel.php
e individuare la linea dove è stato gettato l'eccezione Unable to find adapter
. Ho definito manualmente la variabile aggiungendo la riga self::$configuration['datasources'][$name]['adapter'] = 'pgsql'
e funziona. Questo ovviamente non è la verifica utile per ora, in quanto non sarà in grado di aggiornare Propel senza ripetere questa modifica. Ho scaricato self::$configuration
in Propel.php ed è NULL
, qualche idea perché?
Quale versione stai eseguendo? Se è 1.6, è ancora in supporto afaik - mi piacerebbe presentare un bug. Sembra che la migrazione non stia inizializzando la connessione, anche se non conosco affatto l'interno. Inoltre, se vuoi comprimere uno schema completo.xml e build.properties, proverò una migrazione sulla mia macchina, se vuoi (non li hai ancora provati, ma mantieni il significato per aggirarli!). – halfer