it-swarm.com.de

Wie erhalte ich die SQL der Änderungen, die bei einem Update oder Upgrade an der Datenbank vorgenommen wurden?

Wenn ich ein Plugin, ein Theme oder sogar den Kern von WordPress aktualisiere/aktualisiere, wirkt sich dies auf die Datenbank aus und ändert viele Dinge. Wie verfolge ich das?

Das Problem ist, dass ich ein Repository habe, alle an den Dateien vorgenommenen Änderungen korrekt nachverfolgt werden, aber ich habe keine Ahnung, wie eine SQL-Datei zum Speichern der Datenbankänderungen erstellt wird (Ändern, Einfügen, Aktualisieren, Löschen, Erstellen) , usw.).

Ich benutze ein Tool, Flyway, das die Liste der im Repository vorhandenen SQL-Dateien auswählt und die Abfrage jeder Datei auf die Datenbank anwendet. Meine Frage ist also, wie ich eine SQL-Abfrage aller Änderungen erstelle oder erhalte gemacht durch die Update/Upgrade-Zukunft von WordPress? Auf diese Weise wird das gesamte Team in der Lage sein, nur einen Zug aus dem Repo zu ziehen, und die Änderungen, die ich vorgenommen habe, werden verbreitet.

Vielen Dank.

1
Marco Florian

Anfragen protokollieren:

Sie können alle Abfragen während des Upgrades von Core/Plugin/Theme sammeln, um zu sehen, was passiert. Befolgen Sie einfach diese beiden Schritte:

1) Sie sollten hinzufügen:

define( 'SAVEQUERIES', TRUE );

zu Ihrer wp-config.php-Datei, um alle Abfragen während eines Seitenladens in das $wpdb->queries-Array zu sammeln. Denken Sie daran, es danach zu entfernen.

2) Dann könnten Sie es in die sql.log Datei einloggen. Hier ist ein einfaches Beispiel:

/**
 * Dump all database queries to the /wp-content/sql.log file.
 */
add_action( 'shutdown', function(){

    $file =  WP_CONTENT_DIR . '/sql.log'; // Edit this filepath to your needs.

    if( current_user_can( 'manage_options' ) 
         && file_exists( $file )
         && is_writeable( $file )
         && isset( $GLOBALS['wpdb']->queries )
     )
         file_put_contents( 
                $file, 
                date( 'c' ) . PHP_EOL .  print_r( $GLOBALS['wpdb']->queries, TRUE ), 
                FILE_APPEND 
         );

});

oder verwenden Sie den Filter query der Klasse wpdb, um nur die Abfragen INSERT, UPDATE und DELETE zu protokollieren:

/**
 * Log the INSERT, UPDATE, DELETE database queries to the /wp-content/sql.log file.
 */
add_filter( 'query', function( $query ){
    if( FALSE !== stripos( $query, 'UPDATE ' )
        || FALSE !== stripos( $query, 'INSERT ' )
        || FALSE !== stripos( $query, 'DELETE ' )
     ) {
            $file =  WP_CONTENT_DIR . '/sql.log'; // Edit this filepath to your needs.  
            if( file_exists( $file ) && is_writeable( $file ) ) 
                file_put_contents( 
                    $file, 
                    date( 'c' ) . ' - ' . $query . PHP_EOL, 
                    FILE_APPEND | LOCK_EX 
                );            
    }
    return $query;
}, PHP_INT_MAX );

Kernaktualisierungsdateien:

Für Core-Upgrades könnten diese Dateien für Sie von Interesse sein

  • /wp-includes/version.php
  • /wp-admin/includes/upgrade.php
  • /wp-admin/includes/schema.php

In der Datei /wp-admin/includes/upgrade.php finden Sie die Upgrade-Funktion: wp_upgrade(), die die Funktion upgrade_all() aufruft. Es enthält Datenbank-Upgrades für jede Version in Bezug auf Funktionen wie upgrade_xxx()

Zum Beispiel:

    ...truncated...

    if ( $wp_current_db_version < 22422 )
            upgrade_350();

    if ( $wp_current_db_version < 25824 )
            upgrade_370();

    if ( $wp_current_db_version < 26148 )
            upgrade_372();

    if ( $wp_current_db_version < 26691 )
            upgrade_380();

    maybe_disable_link_manager();

    maybe_disable_automattic_widgets();

    update_option( 'db_version', $wp_db_version );
    update_option( 'db_upgraded', true );

Ich hoffe das hilft.

1
birgire