Automatisierung in Contao 4.9.0 (LTS)

von (Kommentare: 0)

Datenbank Upgrade mit Contao 4.9.0 automatisieren

!! Niemals das Backup vor den Änderungen vergessen !!

Vor den nachfolgend aufgeführten Schritten nicht vergessen eine aktuelle Sicherung der betreffenden Datenbank durchzuführen. Unter MariaDB einfach mit dem Befehl mysqldump -u root -p DATABASENAME > ZIELPFAD und DATEINAME

Mit Contao 4.9 hat Team um Leo Feyer eine Menge neuer Features ins Spiel gebracht. Eines davon ist die Erweiterung der Kommandozeilen basierten Contao Console. Aufzurufen mit vendor/bin/contao-console. Viele kennen dieses Tool im Zusammenhang wenn es z.B. um schnelles Löschen des Caches geht (vendor/bin/contao-console cache:clear --env=dev & vendor/bin/contao-console cache:clear --env=prod) und dem anschließenden neuem Aufwärmen des selbigen mit vendor/bin/contao-console cache:warmup --env=dev & vendor/bin/contao-console cache:warmup --env=prod.

Nun werfen wir einen kleinen Blick auf die neue Funktion vendor/bin/contao-console contao:migrate -h

Mit contao:migrate wird die Möglichkeit geschaffen die Datenbank unkompliziert über die Bash auf den neuesten Stand zu bringen. Sehen wir uns dazu kurz die Befehlsübersicht an:

vendor/bin/contao-console contao:migrate -h

Description:
Executes migrations and the database schema diff.

Usage:
contao:migrate [options]

Options:
--with-deletes Execute all database migrations including DROP queries. Can be used together with --no-interaction.
--schema-only Execute database schema migration only.
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-e, --env=ENV The Environment name. [default: "prod"]
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug


Nun sehen wir bereits die zwei wichtigsten Schalter für unser automatisches Upgrade Skript: --no-interaction und --with-deletes

--no-interaction sorgt natürlich dafür, dass die Datenbank Migration automatisiert aus einem Skript ablaufen kann, ohne einer manuellen Rückfrage und eben daraus resultierenden Benutzer Interaktion.

--with-deletes führt ebenso Datenbank DROPS von mit der Migration überflüssigen Inhalte aus. Man kann auch ohne diesem Schalter arbeiten, allerdings wird werden die zu migrierenden Tabellen eben nur aktualisiert und Tabellen, welche für einen DROP vorgesehen sind bleiben bestehen.

Dann nehmen wir jetzt einmal eine typische Datenbank auf Contao 4.8.8 Stand und führen nach dem Upgrade auf Contao 4.9.0 die notwendige Datenbank Aktualisierung automatisch durch:

vendor/bin/contao-console contao:migrate --no-interaction --with-deletes

Pending migrations
------------------

* Contao\CoreBundle\Migration\Version409\CeAccessMigration

Execute migrations
------------------

*


[OK] Executed 1 migrations.


Pending database migrations
---------------------------

* CREATE TABLE tl_cron_job (id INT UNSIGNED AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, lastRun DATETIME NOT NULL, INDEX name (name), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* CREATE TABLE tl_crawl_queue (id INT UNSIGNED AUTO_INCREMENT NOT NULL, job_id CHAR(128) NOT NULL, uri LONGTEXT NOT NULL, uri_hash CHAR(40) NOT NULL, found_on LONGTEXT DEFAULT NULL, level SMALLINT NOT NULL, processed TINYINT(1) NOT NULL, tags LONGTEXT DEFAULT NULL, INDEX job_id (job_id), INDEX uri_hash (uri_hash), INDEX processed (processed), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* CREATE TABLE tl_trusted_device (id INT AUTO_INCREMENT NOT NULL, created DATETIME NOT NULL, userClass VARCHAR(255) DEFAULT NULL, userId INT DEFAULT NULL, user_agent LONGTEXT DEFAULT NULL, ua_family VARCHAR(255) DEFAULT NULL, os_family VARCHAR(255) DEFAULT NULL, device_family VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* ALTER TABLE tl_content CHANGE com_template com_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE com_template com_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE cal_ctemplate cal_ctemplate VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE cal_template cal_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE nl_template nl_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE news_template news_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE list_info_layout list_info_layout VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE list_layout list_layout VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE rss_template rss_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_newsletter_channel CHANGE template template VARCHAR(32) DEFAULT '' NOT NULL
* ALTER TABLE tl_form_field ADD step VARCHAR(10) DEFAULT '' NOT NULL
* ALTER TABLE tl_image_size ADD lazyLoading CHAR(1) DEFAULT '' NOT NULL
* ALTER TABLE tl_member ADD trustedTokenVersion INT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_member ADD backupCodes TEXT DEFAULT NULL
* ALTER TABLE tl_member ADD loginAttempts SMALLINT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_page ADD robotsTxt TEXT DEFAULT NULL
* ALTER TABLE tl_page ADD favicon BINARY(16) DEFAULT NULL
* ALTER TABLE tl_user ADD trustedTokenVersion INT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_user ADD backupCodes TEXT DEFAULT NULL
* ALTER TABLE tl_user ADD loginAttempts SMALLINT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_user ADD fields BLOB DEFAULT NULL
* ALTER TABLE tl_user ADD elements BLOB DEFAULT NULL
* DROP TABLE tl_cron
* ALTER TABLE tl_member DROP loginCount
* ALTER TABLE tl_user DROP loginCount

Execute database migrations
---------------------------

* CREATE TABLE tl_cron_job (id INT UNSIGNED AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, lastRun DATETIME NOT NULL, INDEX name (name), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* CREATE TABLE tl_crawl_queue (id INT UNSIGNED AUTO_INCREMENT NOT NULL, job_id CHAR(128) NOT NULL, uri LONGTEXT NOT NULL, uri_hash CHAR(40) NOT NULL, found_on LONGTEXT DEFAULT NULL, level SMALLINT NOT NULL, processed TINYINT(1) NOT NULL, tags LONGTEXT DEFAULT NULL, INDEX job_id (job_id), INDEX uri_hash (uri_hash), INDEX processed (processed), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* CREATE TABLE tl_trusted_device (id INT AUTO_INCREMENT NOT NULL, created DATETIME NOT NULL, userClass VARCHAR(255) DEFAULT NULL, userId INT DEFAULT NULL, user_agent LONGTEXT DEFAULT NULL, ua_family VARCHAR(255) DEFAULT NULL, os_family VARCHAR(255) DEFAULT NULL, device_family VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC
* ALTER TABLE tl_content CHANGE com_template com_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE com_template com_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE cal_ctemplate cal_ctemplate VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE cal_template cal_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE nl_template nl_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE news_template news_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE list_info_layout list_info_layout VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE list_layout list_layout VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_module CHANGE rss_template rss_template VARCHAR(64) DEFAULT '' NOT NULL
* ALTER TABLE tl_newsletter_channel CHANGE template template VARCHAR(32) DEFAULT '' NOT NULL
* ALTER TABLE tl_form_field ADD step VARCHAR(10) DEFAULT '' NOT NULL
* ALTER TABLE tl_image_size ADD lazyLoading CHAR(1) DEFAULT '' NOT NULL
* ALTER TABLE tl_member ADD trustedTokenVersion INT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_member ADD backupCodes TEXT DEFAULT NULL
* ALTER TABLE tl_member ADD loginAttempts SMALLINT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_page ADD robotsTxt TEXT DEFAULT NULL
* ALTER TABLE tl_page ADD favicon BINARY(16) DEFAULT NULL
* ALTER TABLE tl_user ADD trustedTokenVersion INT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_user ADD backupCodes TEXT DEFAULT NULL
* ALTER TABLE tl_user ADD loginAttempts SMALLINT UNSIGNED DEFAULT 0 NOT NULL
* ALTER TABLE tl_user ADD fields BLOB DEFAULT NULL
* ALTER TABLE tl_user ADD elements BLOB DEFAULT NULL
* DROP TABLE tl_cron
* ALTER TABLE tl_member DROP loginCount
* ALTER TABLE tl_user DROP loginCount


[OK] Executed 28 SQL queries.

[OK] All migrations completed.

Zurück

Kommentare

Einen Kommentar schreiben

Was ist die Summe aus 8 und 8?