2012-11-30 3 views
7

Ich verstehe, warum ich meine Datenbankverbindungen in der parameters.yml Datei behalten sollte, aber ich wollte auch zusätzliche Datenbankverbindungen sowie verschiedene Hosts für einrichten Entwickler-, Bühnen- und Produktumgebungen. Ich dachte, ich könnte dies mit der , config_test.yml und config_prod.yml in Verbindung mit config.yml tun, bin ich falsch?Verwechslung mit parameters.yml und config_ (dev | stage | prod) .yml für Datenbankverbindungen

In parameters.yml Ich halte die Hauptdatenbankverbindung aber kann ich diese stattdessen zu den Config (s) verschieben?

Beispiel: config.yml

# Doctrine Configuration - notice there is no host defined here 
doctrine: 
    dbal: 
     default_connection: blah 
     connections: 
     blah: 
      driver: pdo_pgsql 
      port:  5432 
      dbname: blah 
      user:  blah_user 
      password: blah_pass 
      charset: UTF8 
     foo: 
      driver: pdo_pgsql 
      port:  5432 
      dbname: foo 
      user:  foo_user 
      password: foo_pass 
      charset: UTF8 

Beispiel: config_dev.yml

# Doctrine Configuration - Here I define the dev hosts 
doctrine: 
    dbal: 
     connections: 
     blah: 
      host: blah_dev 
     foo: 
      host: foo_dev 

Beispiel: config_test.yml

# Doctrine Configuration - Here I define the stage or QA hosts 
doctrine: 
    dbal: 
     connections: 
     blah: 
      host: blah_stage 
     foo: 
      host: foo_stage 

Beispiel: config_prod.yml

# Doctrine Configuration - Here I define the prod hosts 
doctrine: 
    dbal: 
     connections: 
     blah: 
      host: blah_prod 
     foo: 
      host: foo_prod 

Jetzt habe ich auch die Einstellungen in parameters.yml entfernt, aber Symfony/Doctrine mag das nicht. Fehle ich etwas? Wie kann ich etwas einrichten, das ich habe?

Nun, wenn ich die Standard-Datenbankverbindung in parameters.yml definieren kann ich mit ihm verbinden und dann

parameters: 
    database_driver: pdo_pgsql 
    database_host: blah_prod 
    database_port: 5432 
    database_name: blah 
    database_user: blah_user 
    database_password: blah_pass 

und in config.yml

doctrine: 
    dbal: 
     driver: "%database_driver%" 
     host:  "%database_host%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 

Aber jetzt verliere ich die mehr Datenbanken ich brauche und die Möglichkeit von Dev zu Stage zu prod Datenbankservern zu wechseln.

Ich muss einige zusätzliche Dokumentation fehlen, wo dies angesprochen wird, wäre jede Hilfe groß.

Ich habe die Dokumentation für mehrere Datenbankverbindungen mit Lehre

gesehen, aber ich würde zu vermeiden, wie für jeden Entwickler, Bühnen- und prod wie unter drei Datenbank-Optionen hinzufügen Server (n) in parameters.yml

parameters: 
    database_driver: pdo_pgsql 
    database_host: blah_dev 
    database_port: 5432 
    database_name: blah 
    database_user: blah_user 
    database_password: blah_pass 
    #database_driver2: pdo_pgsql 
    database_host2: blah_stage 
    #database_port2: 5432 
    #database_name2: blah 
    #database_user2: blah_user 
    #database_password2: blah_pass 
    #database_driver3: pdo_pgsql 
    database_host3: blah_prod 
    #database_port3: 5432 
    #database_name3: blah 
    #database_user3: blah_user 
    #database_password3: blah_pass 

(Vielleicht die verschiedenen Hosts einfach konfigurieren?)

Das sieht hässlich aus und eine PITA, und das ist nur für blah Datenbank, ich müsste dies für foo und alle anderen Datenbanken tun, die ich konfigurieren muss.

Antwort

0

Ich sehe keinen Grund, verschiedene prod und dev Parameter Konfigurationsdateien zu verwenden. Sie können mit allen definierten Verbindungen auf Ihrem PC http://symfony.com/doc/master/cookbook/workflow/new_project_git.html

Datei

  • spezifische parameters.yml.dist

  • +2

    Danke, ich habe die Dokumentation gesehen, die Sie vorgeschlagen haben, aber es hilft immer noch nicht meine Situation. Aus dem Grund, warum ich dieses Setup möchte. 1) Ich habe mehrere Datenbankserver, 2) Ich habe mehrere Umgebungen (dev, stage, prod, QA) und 3) Ich möchte all diese einfach definieren/konfigurieren, so dass andere (keine Technikerteams) nicht müssen oder haben die Fähigkeit, diese Änderungen vorzunehmen. Irgendwelche anderen Vorschläge? –

    +5

    Vielleicht brauchen Sie nur in config.yml Importe entfernen: - {Ressource: parameters.yml} und in config_dev.yml hinzufügen und Importe config_prod.yml: - {Ressource: parameters_dev.yml} oder - {Ressource : parameter_prod.yml} – nvvetal

    2

    Wenn sind Ihre Verbindungen die gleichen in jeder Umgebung, sondern nur die Konfigurationswerte unterschiedlich sind, sollten Sie die Parameter verwenden -Konfigurationsdatei. Definieren Sie die Umgebungsvariablen, die Sie benötigen, in der parameters.yml.dist-Datei wie folgt:

    # parameters.yml.dist 
    parameters: 
        database_host_1: blah 
        database_host_2: blub 
        ... 
    

    Ihre config.ml wie folgt aussehen:

    # config.yml 
    imports: 
        - { resource: parameters.yml } 
    ... 
    doctrine: 
        dbal: 
        default_connection: blah 
        connections: 
        blah: 
         driver: pdo_pgsql 
         port:  5432 
         host:  "%database_host_1%" 
         dbname: blah 
         user:  blah_user 
         password: blah_pass 
         charset: UTF8 
        foo: 
         driver: pdo_pgsql 
         port:  5432 
         host:  "%database_host_2%" 
         dbname: foo 
         user:  foo_user 
         password: foo_pass 
         charset: UTF8 
    

    Wenn Ihr parameters.yml fehlt, Beim nächsten Aufruf werden Sie nach dem Datenbank-Hostnamen gefragt, zum Beispiel Composer-Update.

    Wenn Sie möchten, dass alle Konfigurationen in separaten Dateien gespeichert werden, sollten Sie dies am Anfang Ihrer config_XXX.yml Dateien hinzufügen:

    # config_XXX.yml 
    imports: 
        - { resource: config.yml } 
        - { resource: parameters_XXX.yml } 
    

    Ersetzen XXX mit Ihrer Umgebung. Erstellen Sie eine parameters_XXX.yml für jede Umgebung und legen Sie die Konfigurationsparameter für Ihre Hosts dort wie in der Standarddatei parameters.yml fest.

    # parameters_XXX.yml 
    parameters: 
        database_host_1: blahInXXXEnv 
        database_host_2: blubInXXXEnv 
        ... 
    
    Verwandte Themen