Nach meiner vorherigen Frage Wie stelle ich Drush SQL-Sync so ein, dass Benutzer nicht zwischen @dev und @staging geklont werden? Ich habe manuell über 80 Tabellen vorausgewählt, die nicht automatisch synchronisiert werden sollen (Inhalt, Rollen und Berechtigungen, Benutzer, temporär, Cache). Ich bin mit dieser Lösung nicht ganz zufrieden. Warum? Weil meine Filterentscheidungen auf Erfahrung, Intuition und Vermutung basieren, wann ich die Best-Practice-Methode anwenden möchte.
Wie wähle ich richtig aus, für welche Tabellen übersprungen werden soll drush sql-sync @dev @tst
und drush sql-sync @production @staging
?
Mein Setup:
git.drupal.org ==> lokales Drupal-Git-Repository ==> @dev -> @tst -> @staging -> @production (Konfiguration, statischer Inhalt, Rollen und Berechtigungen)@staging <- @production (Inhalt, zu testende Produktionsszenarien)
Der endgültige Leitfaden zu Drupal 7 von Benjamin Melançon und anderen sagt:
Hier ist die Liste der Tabellen, die in angezeigt wird
example.drushrc.php
:$options['structure-tables'] = array( 'common' => array('cache', 'cache_filter', 'cache_menu', 'cache_page', 'history', 'sessions', 'watchdog'), );
Möglicherweise müssen Sie dieser Liste weitere Tabellen hinzufügen. Ein guter Anfang wäre, die Liste der Tabellen zu betrachten, die
cache
in ihrem Namen über enthaltendrush sql-query 'show tables;' | grep cache
Entfernen Sie aus dieser Liste Tabellen wie
imagecache_action
usw. und fügen Sie den Rest Ihrer Strukturtabellenliste hinzu.Nachdem Sie eine
sql-sync
Tabelle mit übersprungenen Tabellen erstellt haben, müssen Sie den Cache auf der Zielwebsite leeren, um sicherzustellen, dass die Dinge richtig funktionieren.
Was sind die anderen zu berücksichtigenden Tabellen? Warum?