diff --git a/app/DoctrineMigrations/Version20160410190541.php b/app/DoctrineMigrations/Version20160410190541.php index f166a3251..ebf4135f9 100644 --- a/app/DoctrineMigrations/Version20160410190541.php +++ b/app/DoctrineMigrations/Version20160410190541.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added foreign keys for account resetting + */ class Version20160410190541 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20160812120952.php b/app/DoctrineMigrations/Version20160812120952.php index 053b8d889..bd6e8d636 100644 --- a/app/DoctrineMigrations/Version20160812120952.php +++ b/app/DoctrineMigrations/Version20160812120952.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added name field on wallabag_oauth2_clients + */ class Version20160812120952 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20160911214952.php b/app/DoctrineMigrations/Version20160911214952.php index 6ddeb767c..edef81ed5 100644 --- a/app/DoctrineMigrations/Version20160911214952.php +++ b/app/DoctrineMigrations/Version20160911214952.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added settings for RabbitMQ and Redis imports + */ class Version20160911214952 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20160916201049.php b/app/DoctrineMigrations/Version20160916201049.php index 8b42bb879..9f8e77e73 100644 --- a/app/DoctrineMigrations/Version20160916201049.php +++ b/app/DoctrineMigrations/Version20160916201049.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added pocket_consumer_key field on wallabag_config + */ class Version20160916201049 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161001072726.php b/app/DoctrineMigrations/Version20161001072726.php index f6930778c..f247c236f 100644 --- a/app/DoctrineMigrations/Version20161001072726.php +++ b/app/DoctrineMigrations/Version20161001072726.php @@ -6,7 +6,11 @@ use Doctrine\DBAL\Migrations\AbstractMigration; use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +use Doctrine\DBAL\Migrations\SkipMigrationException; +/** + * Added pocket_consumer_key field on wallabag_config + */ class Version20161001072726 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161022134138.php b/app/DoctrineMigrations/Version20161022134138.php index d0e5cb3fc..c71166a00 100644 --- a/app/DoctrineMigrations/Version20161022134138.php +++ b/app/DoctrineMigrations/Version20161022134138.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Converted database to utf8mb4 encoding (for MySQL only) + */ class Version20161022134138 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161024212538.php b/app/DoctrineMigrations/Version20161024212538.php index 75ff86f1f..ecb872d10 100644 --- a/app/DoctrineMigrations/Version20161024212538.php +++ b/app/DoctrineMigrations/Version20161024212538.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added user_id column on oauth2_clients to prevent users to delete API clients from other users + */ class Version20161024212538 extends AbstractMigration implements ContainerAwareInterface { /** @@ -14,6 +17,8 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI */ private $container; + private $constraintName = 'IDX_user_oauth_client'; + public function setContainer(ContainerInterface $container = null) { $this->container = $container; @@ -33,13 +38,14 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI $this->skipIf($clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.'); - $clientsTable->addColumn('user_id', 'integer'); + $clientsTable->addColumn('user_id', 'integer', ['notnull' => false]); $clientsTable->addForeignKeyConstraint( $this->getTable('user'), ['user_id'], ['id'], - ['onDelete' => 'CASCADE'] + ['onDelete' => 'CASCADE'], + $this->constraintName ); } @@ -48,5 +54,14 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI */ public function down(Schema $schema) { + $clientsTable = $schema->getTable($this->getTable('oauth2_clients')); + + $this->skipIf(!$clientsTable->hasColumn('user_id'), 'It seems that you already played this migration.'); + + $clientsTable->dropColumn('user_id', 'integer'); + + if ($this->connection->getDatabasePlatform()->getName() != 'sqlite') { + $clientsTable->removeForeignKey($this->constraintName); + } } } diff --git a/app/DoctrineMigrations/Version20161031132655.php b/app/DoctrineMigrations/Version20161031132655.php index f81898ff3..83b97ca99 100644 --- a/app/DoctrineMigrations/Version20161031132655.php +++ b/app/DoctrineMigrations/Version20161031132655.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added the internal setting to enable/disable downloading pictures + */ class Version20161031132655 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161104073720.php b/app/DoctrineMigrations/Version20161104073720.php index 4721426a4..fb8f5fa1e 100644 --- a/app/DoctrineMigrations/Version20161104073720.php +++ b/app/DoctrineMigrations/Version20161104073720.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added created_at index on entry table + */ class Version20161104073720 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161106113822.php b/app/DoctrineMigrations/Version20161106113822.php index 55bd87a2c..de3702a40 100644 --- a/app/DoctrineMigrations/Version20161106113822.php +++ b/app/DoctrineMigrations/Version20161106113822.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added action_mark_as_read field on config table + */ class Version20161106113822 extends AbstractMigration implements ContainerAwareInterface { /** @@ -45,6 +48,9 @@ class Version20161106113822 extends AbstractMigration implements ContainerAwareI public function down(Schema $schema) { $configTable = $schema->getTable($this->getTable('config')); - $userTable->dropColumn('action_mark_as_read'); + + $this->skipIf(!$configTable->hasColumn('action_mark_as_read'), 'It seems that you already played this migration.'); + + $configTable->dropColumn('action_mark_as_read'); } } diff --git a/app/DoctrineMigrations/Version20161117071626.php b/app/DoctrineMigrations/Version20161117071626.php index d864888f1..8daa2142b 100644 --- a/app/DoctrineMigrations/Version20161117071626.php +++ b/app/DoctrineMigrations/Version20161117071626.php @@ -7,6 +7,9 @@ use Doctrine\DBAL\Schema\Schema; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * Added the internal setting to share articles to unmark.it + */ class Version20161117071626 extends AbstractMigration implements ContainerAwareInterface { /** diff --git a/app/DoctrineMigrations/Version20161118134328.php b/app/DoctrineMigrations/Version20161118134328.php index f168cb53c..7b2eeb7bd 100644 --- a/app/DoctrineMigrations/Version20161118134328.php +++ b/app/DoctrineMigrations/Version20161118134328.php @@ -47,7 +47,10 @@ class Version20161118134328 extends AbstractMigration implements ContainerAwareI */ public function down(Schema $schema) { - $userTable = $schema->getTable($this->getTable('entry')); - $userTable->dropColumn('http_status'); + $entryTable = $schema->getTable($this->getTable('entry')); + + $this->skipIf(!$entryTable->hasColumn('http_status'), 'It seems that you already played this migration.'); + + $entryTable->dropColumn('http_status'); } } diff --git a/app/DoctrineMigrations/Version20161122203647.php b/app/DoctrineMigrations/Version20161122203647.php index 94197193c..9b17d6efd 100644 --- a/app/DoctrineMigrations/Version20161122203647.php +++ b/app/DoctrineMigrations/Version20161122203647.php @@ -54,7 +54,10 @@ class Version20161122203647 extends AbstractMigration implements ContainerAwareI public function down(Schema $schema) { $userTable = $schema->getTable($this->getTable('user')); - $userTable->addColumn('expired', 'smallint'); - $userTable->addColumn('credentials_expired', 'smallint'); + + $this->skipIf(true === $userTable->hasColumn('expired') || true === $userTable->hasColumn('credentials_expired'), 'It seems that you already played this migration.'); + + $userTable->addColumn('expired', 'smallint', ['notnull' => false]); + $userTable->addColumn('credentials_expired', 'smallint', ['notnull' => false]); } } diff --git a/app/DoctrineMigrations/Version20161128131503.php b/app/DoctrineMigrations/Version20161128131503.php index f0e016c8c..b71aa38bc 100644 --- a/app/DoctrineMigrations/Version20161128131503.php +++ b/app/DoctrineMigrations/Version20161128131503.php @@ -55,7 +55,7 @@ class Version20161128131503 extends AbstractMigration implements ContainerAwareI foreach ($this->fields as $field => $type) { $this->skipIf($userTable->hasColumn($field), 'It seems that you already played this migration.'); - $userTable->addColumn($field, $type); + $userTable->addColumn($field, $type, ['notnull' => false]); } } } diff --git a/docs/de/user/query-upgrade-21-22.rst b/docs/de/user/query-upgrade-21-22.rst new file mode 100644 index 000000000..cd201dc2c --- /dev/null +++ b/docs/de/user/query-upgrade-21-22.rst @@ -0,0 +1,797 @@ +Migration 20161001072726 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBA364942 + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBAD26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP FOREIGN KEY FK_A7AED006BA364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cba364942 + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cbad26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP CONSTRAINT fk_a7aed006ba364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +SQLite +^^^^^^ + +This migration can only be executed safely on MySQL or PostgreSQL. + +Migration 20161022134138 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE confirmation_token confirmation_token VARCHAR(180) DEFAULT NULL; + ALTER TABLE wallabag_user CHANGE salt salt VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_user CHANGE password password VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + +PostgreSQL and SQLite +^^^^^^^^^^^^^^^^^^^^^ + +This migration only apply to MySQL. + +Migration 20161024212538 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT NOT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP FOREIGN KEY IDX_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT DEFAULT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP CONSTRAINT idx_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id), CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_635D765EA76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + +Migration 20161031132655 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +Migration 20161104073720 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_created_at + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + +Migration 20161106113822 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN action_mark_as_read INTEGER DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161117071626 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +Migration 20161118134328 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD COLUMN http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + +Migration 20161122144743 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +Migration 20161122203647 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired, DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL, ADD credentials_expired SMALLINT DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired + ALTER TABLE wallabag_user DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expired SMALLINT DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E5C05FB297 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E592FC23A8 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expired SMALLINT DEFAULT NULL + +Migration 20161128084725 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN list_mode INTEGER DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161128131503 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked, DROP credentials_expire_at, DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL, ADD credentials_expire_at DATETIME DEFAULT NULL, ADD expires_at DATETIME DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked + ALTER TABLE wallabag_user DROP credentials_expire_at + ALTER TABLE wallabag_user DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + ALTER TABLE wallabag_user ADD expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expire_at DATETIME DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN expires_at DATETIME DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E592FC23A8 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E5C05FB297 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, expired SMALLINT DEFAULT NULL, credentials_expired SMALLINT DEFAULT NULL, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + +Migration 20161214094403 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_uid + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) diff --git a/docs/de/user/upgrade.rst b/docs/de/user/upgrade.rst index fbbf29f45..1107616e2 100644 --- a/docs/de/user/upgrade.rst +++ b/docs/de/user/upgrade.rst @@ -3,10 +3,66 @@ wallabag-Installation aktualisieren Du wirst hier mehrere Wege finden, um deine wallabag zu aktualisieren: +- `von 2.1.x zu 2.2.x <#upgrade-von-2-1-x-zu-2-2-x>`_ - `von 2.0.x zu 2.1.1 <#upgrade-von-2-0-x-zu-2-1-1>`_ -- `von 2.1.x zu 2.1.y <#upgrade-von-2-1-x-zu-2-1-y>`_ - `von 1.x zu 2.x <#upgrade-von-1-x>`_ +Upgrade von 2.1.x zu 2.2.x +-------------------------- + +Upgrade auf einem dedizierten Webserver +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + make update + +Erklärungen über die Datenbankmigration +""""""""""""""""""""""""""""""""""""""" + +Während des Updates migrieren wir die Datenbank. + +Alle Datenbankmigrationen sind im Verzeichnis ``app/DoctrineMigrations`` gespeichert. Jede von ihnen kann einzeln ausgeführt werden: +``bin/console doctrine:migrations:execute 20161001072726 --env=prod``. + +Dies ist die Migrationsliste von 2.1.x auf 2.2.0: + +* ``20161001072726``: Fremdschlüssel für das Zurücksetzen des Kontos hinzugefügt +* ``20161022134138``: Datenbank zum ``utf8mb4``-Encoding ändern (nur für MySQL) +* ``20161024212538``: ``user_id``-Spalte zu ``oauth2_clients`` hinzugefügt, um Benutzer davon abzuhalten, API-Clients anderer Nutzer zu löschen +* ``20161031132655``: Interne Einstellung für das (de-)aktivieren vom Bilder-Download hinzugefügt +* ``20161104073720``: ``created_at``-Index zur ``entry``-Tabelle hinzugefügt +* ``20161106113822``: ``action_mark_as_read``-Feld zur ``config``-Tabelle hinzugefügt +* ``20161117071626``: Interne Einstellung zum Teilen mit unmark.it hinzugefügt +* ``20161118134328``: ``http_status``-Feld zur ``entry``-Tabelle hinzugefügt +* ``20161122144743``: Interne Einstellung für das (de-)aktivieren zum Holen von Artikeln mit einer Paywall hinzugefügt +* ``20161122203647``: ``expired``- und ``credentials_expired``-Feld aus der ``user``-Tabelle entfernt + +Upgrade auf einem Shared Hosting +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sichere deine ``app/config/parameters.yml``-Datei. + +Lade das letzte Release von wallabag herunter: + +.. code-block:: bash + + wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package + +Du findest den `aktuellen MD5-Hash auf unserer Webseite `_. + +Extrahiere das Archiv in deinen wallabag-Ordner und ersetze die ``app/config/parameters.yml`` mit deiner. + +Bitte überprüfe, dass deine ``app/config/parameters.yml`` alle notwendigen Parameter enthält. Eine Dokumentation darüber `findest du hier `_. + +Falls du SQLite nutzt, musst du außerdem deinen ``data/``-Ordner in die neue Installation kopieren. + +Leere den ``var/cache``-Ordner. + +Du musst einige SQL-Abfragen durchführen, um deine Datenbank zu aktualisieren. Wir gehen in diesem Fall davon aus, dass das Tabellenpräfix ``wallabag_`` ist. + +`You can find all the queries here `_. + Upgrade von 2.0.x zu 2.1.1 --------------------------- @@ -36,7 +92,7 @@ Lade das 2.1.1-Release von wallabag herunter: .. code-block:: bash - wget https://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz + wget http://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz (md5 hash of the 2.1.1 package: ``9584a3b60a2b2a4de87f536548caac93``) @@ -60,39 +116,6 @@ Du musst einige SQL-Abfragen durchführen, um deine Datenbank zu aktualisieren. ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; -Upgrade von 2.1.x zu 2.1.y ------------------------------ - -Upgrade auf einem dedizierten Webserver -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Um deine wallabag-Installation auf die letzte Version zu aktualisieren, führe den folgenden Befehl in deinem wallabag-Ordner aus: - -:: - - make update - -Upgrade auf einem Shared Hosting -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Sichere deine ``app/config/parameters.yml``-Datei. - -Lade das letzte Release von wallabag herunter: - -.. code-block:: bash - - wget https://wllbg.org/latest-v2-package && tar xvf latest-v2-package - -Du findest den `aktuellen MD5-Hash auf unserer Webseite `_. - -Extrahiere das Archiv in deinen wallabag-Ordner und ersetze die ``app/config/parameters.yml`` mit deiner. - -Bitte überprüfe, dass deine ``app/config/parameters.yml`` alle notwendigen Parameter enthält. Eine Dokumentation darüber `findest du hier `_. - -Falls du SQLite nutzt, musst du außerdem deinen ``data/``-Ordner in die neue Installation kopieren. - -Leere den ``var/cache``-Ordner. - Upgrade von 1.x --------------- @@ -100,4 +123,4 @@ Es gibt kein automatisiertes Skript, um wallabag 1.x auf wallabag 2.x zu aktuali - deine Daten exportieren - wallabag 2.x installieren (Dokumentation `_ ) -- die Daten in die neue Installation importieren (`Dokumentation `_ ) \ No newline at end of file +- die Daten in die neue Installation importieren (`Dokumentation `_ ) diff --git a/docs/en/user/query-upgrade-21-22.rst b/docs/en/user/query-upgrade-21-22.rst new file mode 100644 index 000000000..cd201dc2c --- /dev/null +++ b/docs/en/user/query-upgrade-21-22.rst @@ -0,0 +1,797 @@ +Migration 20161001072726 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBA364942 + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBAD26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP FOREIGN KEY FK_A7AED006BA364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cba364942 + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cbad26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP CONSTRAINT fk_a7aed006ba364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +SQLite +^^^^^^ + +This migration can only be executed safely on MySQL or PostgreSQL. + +Migration 20161022134138 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE confirmation_token confirmation_token VARCHAR(180) DEFAULT NULL; + ALTER TABLE wallabag_user CHANGE salt salt VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_user CHANGE password password VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + +PostgreSQL and SQLite +^^^^^^^^^^^^^^^^^^^^^ + +This migration only apply to MySQL. + +Migration 20161024212538 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT NOT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP FOREIGN KEY IDX_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT DEFAULT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP CONSTRAINT idx_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id), CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_635D765EA76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + +Migration 20161031132655 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +Migration 20161104073720 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_created_at + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + +Migration 20161106113822 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN action_mark_as_read INTEGER DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161117071626 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +Migration 20161118134328 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD COLUMN http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + +Migration 20161122144743 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +Migration 20161122203647 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired, DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL, ADD credentials_expired SMALLINT DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired + ALTER TABLE wallabag_user DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expired SMALLINT DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E5C05FB297 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E592FC23A8 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expired SMALLINT DEFAULT NULL + +Migration 20161128084725 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN list_mode INTEGER DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161128131503 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked, DROP credentials_expire_at, DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL, ADD credentials_expire_at DATETIME DEFAULT NULL, ADD expires_at DATETIME DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked + ALTER TABLE wallabag_user DROP credentials_expire_at + ALTER TABLE wallabag_user DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + ALTER TABLE wallabag_user ADD expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expire_at DATETIME DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN expires_at DATETIME DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E592FC23A8 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E5C05FB297 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, expired SMALLINT DEFAULT NULL, credentials_expired SMALLINT DEFAULT NULL, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + +Migration 20161214094403 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_uid + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) diff --git a/docs/en/user/upgrade.rst b/docs/en/user/upgrade.rst index e6e4c1657..99260e135 100644 --- a/docs/en/user/upgrade.rst +++ b/docs/en/user/upgrade.rst @@ -1,21 +1,87 @@ +================================== Upgrade your wallabag installation ================================== You will find here different ways to upgrade your wallabag: +- `from 2.1.x to 2.2.x <#upgrading-from-2-1-x-to-2-2-x>`_ - `from 2.0.x to 2.1.1 <#upgrade-from-2-0-x-to-2-1-1>`_ -- `from 2.1.x to 2.1.y <#upgrading-from-2-1-x-to-2-1-y>`_ - `from 1.x to 2.x <#from-wallabag-1-x>`_ +***************************** +Upgrading from 2.1.x to 2.2.x +***************************** + +Upgrade on a dedicated web server +================================= + +:: + + make update + +Explanations about database migrations +-------------------------------------- + +During the update, we execute database migrations. + +All the database migrations are stored in ``app/DoctrineMigrations``. You can execute each migration individually: +``bin/console doctrine:migrations:execute 20161001072726 --env=prod``. + +You can also cancel each migration individually: ``bin/console doctrine:migrations:execute 20161001072726 --down --env=prod``. + +Here is the migrations list for 2.1.x to 2.2.0 release: + +* ``20161001072726``: added foreign keys for account resetting +* ``20161022134138``: converted database to ``utf8mb4`` encoding (for MySQL only) +* ``20161024212538``: added ``user_id`` column on ``oauth2_clients`` to prevent users to delete API clients from other users +* ``20161031132655``: added the internal setting to enable/disable downloading pictures +* ``20161104073720``: added ``created_at`` index on ``entry`` table +* ``20161106113822``: added ``action_mark_as_read`` field on ``config`` table +* ``20161117071626``: added the internal setting to share articles to unmark.it +* ``20161118134328``: added ``http_status`` field on ``entry`` table +* ``20161122144743``: added the internal setting to enable/disable fetching articles with paywall +* ``20161122203647``: dropped ``expired`` and ``credentials_expired`` fields on ``user`` table +* ``20161128084725``: added ``list_mode`` field on ``config`` table +* ``20161128131503``: dropped ``locked``, ``credentials_expire_at`` and ``expires_at`` fields on ``user`` table +* ``20161214094403``: added ``uid`` index on ``entry`` table + +Upgrade on a shared hosting +=========================== + +Backup your ``app/config/parameters.yml`` file. + +Download the last release of wallabag: + +.. code-block:: bash + + wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package + +You will find the `md5 hash of the latest package on our website `_. + +Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours. + +Please check that your ``app/config/parameters.yml`` contains all the required parameters. You can find `here a documentation about parameters `_. + +If you use SQLite, you must also copy your ``data/`` folder inside the new installation. + +Empty ``var/cache`` folder. + +You must run some SQL queries to upgrade your database. We assume that the table prefix is ``wallabag_``. Don't forgete to backup your database before migrating. + +You may encounter issues with indexes names: if so, please change queries with the correct index name. + +`You can find all the queries here `_. + +*************************** Upgrade from 2.0.x to 2.1.1 ---------------------------- +*************************** .. warning:: Before this migration, if you configured the Pocket import by adding your consumer key in Internal settings, please do a backup of it: you'll have to add it into the Config page after the upgrade. Upgrade on a dedicated web server -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +================================= :: @@ -28,7 +94,7 @@ Upgrade on a dedicated web server php bin/console cache:clear --env=prod Upgrade on a shared hosting -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +=========================== Backup your ``app/config/parameters.yml`` file. @@ -36,7 +102,7 @@ Download the 2.1.1 release of wallabag: .. code-block:: bash - wget https://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz + wget http://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz (md5 hash of the 2.1.1 package: ``9584a3b60a2b2a4de87f536548caac93``) @@ -60,41 +126,9 @@ You must run some SQL queries to upgrade your database. We assume that the table ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; -Upgrading from 2.1.x to 2.1.y ------------------------------ - -Upgrade on a dedicated web server -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In order to upgrade your wallabag installation and get the last version, run the following command in you wallabag folder: - -:: - - make update - -Upgrade on a shared hosting -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Backup your ``app/config/parameters.yml`` file. - -Download the last release of wallabag: - -.. code-block:: bash - - wget https://wllbg.org/latest-v2-package && tar xvf latest-v2-package - -You will find the `md5 hash of the latest package on our website `_. - -Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours. - -Please check that your ``app/config/parameters.yml`` contains all the required parameters. You can find `here a documentation about parameters `_. - -If you use SQLite, you must also copy your ``data/`` folder inside the new installation. - -Empty ``var/cache`` folder. - +***************** From wallabag 1.x ------------------ +***************** There is no automatic script to update from wallabag 1.x to wallabag 2.x. You need to: diff --git a/docs/fr/user/query-upgrade-21-22.rst b/docs/fr/user/query-upgrade-21-22.rst new file mode 100644 index 000000000..cd201dc2c --- /dev/null +++ b/docs/fr/user/query-upgrade-21-22.rst @@ -0,0 +1,797 @@ +Migration 20161001072726 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBA364942 + ALTER TABLE wallabag_entry_tag DROP FOREIGN KEY FK_C9F0DD7CBAD26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP FOREIGN KEY FK_A7AED006BA364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cba364942 + ALTER TABLE wallabag_entry_tag DROP CONSTRAINT fk_c9f0dd7cbad26311 + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + ALTER TABLE wallabag_entry_tag ADD CONSTRAINT FK_entry_tag_tag FOREIGN KEY (tag_id) REFERENCES wallabag_tag (id) ON DELETE CASCADE + ALTER TABLE wallabag_annotation DROP CONSTRAINT fk_a7aed006ba364942 + ALTER TABLE wallabag_annotation ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE + +Migration down +"""""""""""""" + +We didn't write down migration for ``20161001072726``. + +SQLite +^^^^^^ + +This migration can only be executed safely on MySQL or PostgreSQL. + +Migration 20161022134138 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE confirmation_token confirmation_token VARCHAR(180) DEFAULT NULL; + ALTER TABLE wallabag_user CHANGE salt salt VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_user CHANGE password password VARCHAR(180) NOT NULL; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER DATABASE wallabag CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; + ALTER TABLE wallabag_annotation CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `text` `text` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_annotation CHANGE `quote` `quote` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `title` `title` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_entry CHANGE `content` `content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_tag CHANGE `label` `label` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + ALTER TABLE wallabag_user CHANGE `name` `name` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci; + +PostgreSQL and SQLite +^^^^^^^^^^^^^^^^^^^^^ + +This migration only apply to MySQL. + +Migration 20161024212538 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT NOT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP FOREIGN KEY IDX_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients ADD user_id INT DEFAULT NULL + ALTER TABLE wallabag_oauth2_clients ADD CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_oauth2_clients DROP CONSTRAINT idx_user_oauth_client + ALTER TABLE wallabag_oauth2_clients DROP user_id + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id), CONSTRAINT IDX_user_oauth_client FOREIGN KEY (user_id) REFERENCES wallabag_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + CREATE INDEX IDX_635D765EA76ED395 ON wallabag_oauth2_clients (user_id) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_635D765EA76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM wallabag_oauth2_clients + DROP TABLE wallabag_oauth2_clients + CREATE TABLE wallabag_oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types, name) SELECT id, random_id, redirect_uris, secret, allowed_grant_types, name FROM __temp__wallabag_oauth2_clients + DROP TABLE __temp__wallabag_oauth2_clients + +Migration 20161031132655 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('download_images_enabled', 0, 'misc') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'download_images_enabled'; + +Migration 20161104073720 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_created_at + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX IDX_entry_created_at ON wallabag_entry (created_at) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_created_at + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + +Migration 20161106113822 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD action_mark_as_read INT DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP action_mark_as_read + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN action_mark_as_read INTEGER DEFAULT 0 + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161117071626 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('share_unmark', 0, 'entry') + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('unmark_url', 'https://unmark.it', 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'share_unmark'; + DELETE FROM wallabag_craue_config_setting WHERE name = 'unmark_url'; + +Migration 20161118134328 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry DROP http_status + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_entry ADD COLUMN http_status VARCHAR(3) DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uuid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uuid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + +Migration 20161122144743 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + INSERT INTO wallabag_craue_config_setting (name, value, section) VALUES ('restricted_access', 0, 'entry') + +Migration down +"""""""""""""" + +.. code-block:: sql + + DELETE FROM wallabag_craue_config_setting WHERE name = 'restricted_access'; + +Migration 20161122203647 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired, DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL, ADD credentials_expired SMALLINT DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP expired + ALTER TABLE wallabag_user DROP credentials_expired + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expired SMALLINT DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E5C05FB297 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E592FC23A8 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, locked, expires_at, confirmation_token, password_requested_at, roles, credentials_expire_at, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN expired SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expired SMALLINT DEFAULT NULL + +Migration 20161128084725 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD list_mode INT DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config DROP list_mode + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_config ADD COLUMN list_mode INTEGER DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_87E64C53A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_config AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM wallabag_config + DROP TABLE wallabag_config + CREATE TABLE wallabag_config (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, PRIMARY KEY(id)) + INSERT INTO wallabag_config (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key FROM __temp__wallabag_config + DROP TABLE __temp__wallabag_config + CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON wallabag_config (user_id) + +Migration 20161128131503 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked, DROP credentials_expire_at, DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL, ADD credentials_expire_at DATETIME DEFAULT NULL, ADD expires_at DATETIME DEFAULT NULL + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user DROP locked + ALTER TABLE wallabag_user DROP credentials_expire_at + ALTER TABLE wallabag_user DROP expires_at + +Migration down +"""""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + ALTER TABLE wallabag_user ADD expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + ALTER TABLE wallabag_user ADD COLUMN locked SMALLINT DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN credentials_expire_at DATETIME DEFAULT NULL + ALTER TABLE wallabag_user ADD COLUMN expires_at DATETIME DEFAULT NULL + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX UNIQ_1D63E7E592FC23A8 + DROP INDEX UNIQ_1D63E7E5A0D96FBF + DROP INDEX UNIQ_1D63E7E5C05FB297 + CREATE TEMPORARY TABLE __temp__wallabag_user AS SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM wallabag_user + DROP TABLE wallabag_user + CREATE TABLE wallabag_user (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL COLLATE BINARY, username_canonical VARCHAR(180) NOT NULL COLLATE BINARY, email VARCHAR(180) NOT NULL COLLATE BINARY, email_canonical VARCHAR(180) NOT NULL COLLATE BINARY, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL COLLATE BINARY, password VARCHAR(255) NOT NULL COLLATE BINARY, last_login DATETIME DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL COLLATE BINARY, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL COLLATE BINARY, name CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL COLLATE BINARY, expired SMALLINT DEFAULT NULL, credentials_expired SMALLINT DEFAULT NULL, PRIMARY KEY(id)) + INSERT INTO wallabag_user (id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired) SELECT id, username, username_canonical, email, email_canonical, enabled, salt, password, last_login, confirmation_token, password_requested_at, roles, name, created_at, updated_at, authCode, twoFactorAuthentication, trusted, expired, credentials_expired FROM __temp__wallabag_user + DROP TABLE __temp__wallabag_user + CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON wallabag_user (username_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON wallabag_user (email_canonical) + CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON wallabag_user (confirmation_token) + +Migration 20161214094403 +------------------------ + +MySQL +^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid ON wallabag_entry + +PostgreSQL +^^^^^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX idx_entry_uid + +SQLite +^^^^^^ + +Migration up +"""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_F4D18282A76ED395 + DROP INDEX created_at_idx + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_entry_uid ON wallabag_entry (uid) + +Migration down +"""""""""""""" + +.. code-block:: sql + + DROP INDEX IDX_entry_uid + DROP INDEX created_at_idx + DROP INDEX IDX_F4D18282A76ED395 + CREATE TEMPORARY TABLE __temp__wallabag_entry AS SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM wallabag_entry + DROP TABLE wallabag_entry + CREATE TABLE wallabag_entry (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, uid CLOB DEFAULT NULL COLLATE BINARY, title CLOB DEFAULT NULL COLLATE BINARY, url CLOB DEFAULT NULL COLLATE BINARY, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL COLLATE BINARY, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL COLLATE BINARY, language CLOB DEFAULT NULL COLLATE BINARY, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL COLLATE BINARY, preview_picture CLOB DEFAULT NULL COLLATE BINARY, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id)) + INSERT INTO wallabag_entry (id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public) SELECT id, user_id, uid, title, url, is_archived, is_starred, content, created_at, updated_at, mimetype, language, reading_time, domain_name, preview_picture, is_public FROM __temp__wallabag_entry + DROP TABLE __temp__wallabag_entry + CREATE INDEX created_at_idx ON wallabag_entry (created_at) + CREATE INDEX IDX_F4D18282A76ED395 ON wallabag_entry (user_id) diff --git a/docs/fr/user/upgrade.rst b/docs/fr/user/upgrade.rst index 9aaa7782b..088b19a00 100644 --- a/docs/fr/user/upgrade.rst +++ b/docs/fr/user/upgrade.rst @@ -3,10 +3,67 @@ Mettre à jour votre installation de wallabag Vous trouverez ici différentes manières de mettre à jour wallabag : +- `de la 2.1.x à la 2.2.x <#mettre-a-jour-de-la-2-1-x-a-la-2-2-x>`_ - `de la 2.0.x à la 2.1.1 <#mettre-a-jour-de-la-2-0-x-a-la-2-1-1>`_ -- `de la 2.1.x à la 2.1.y <#mettre-a-jour-de-la-2-1-x-a-la-2-1-y>`_ - `de la 1.x à la 2.x <#depuis-wallabag-1-x>`_ +Mettre à jour de la 2.1.x à la 2.2.x +------------------------------------ + +Mise à jour sur un serveur dédié +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + make update + +Explications à propos des migrations de base de données +""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +Durant la mise à jour, nous exécutons des migrations de base de données. + +Toutes les migrations de base de données sont stockées dans le dossier ``app/DoctrineMigrations``. Vous pouvez exécuter chaque migration individuellement : +``bin/console doctrine:migrations:execute 20161001072726 --env=prod``. + +Voici la liste des migrations de la 2.1.x à la 2.2.0 : + +* ``20161001072726``: ajout de clés étrangères pour la réinitialisation de compte +* ``20161022134138``: conversion de la base de données à l'encodage ``utf8mb4`` (pour MySQL uniquement) +* ``20161024212538``: ajout de la colonne ``user_id`` sur la table ``oauth2_clients`` pour empêcher les utilisateurs de supprimer des clients API d'autres utilisateurs +* ``20161031132655``: ajout du paramètre interne pour activer/désactiver le téléchargement des images +* ``20161104073720``: ajout de l'index ``created_at`` sur la table ``entry`` +* ``20161106113822``: ajout du champ ``action_mark_as_read`` sur la table ``config`` +* ``20161117071626``: ajout du paramètre interne pour partager ses articles vers unmark.it +* ``20161118134328``: ajout du champ ``http_status`` sur la table ``entry`` +* ``20161122144743``: ajout du paramètre interne pour activer/désactiver la récupération d'articles derrière un paywall +* ``20161122203647``: suppression des champs ``expired`` et ``credentials_expired`` sur la table ``user`` + +Mise à jour sur un hébergement mutualisé +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Effectuez une sauvegarde du fichier ``app/config/parameters.yml``. + +Téléchargez la dernière version de wallabag : + +.. code-block:: bash + + wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package + +Vous trouverez `le hash md5 du dernier package sur notre site `_. + +Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre. + +Merci de vérifier que votre fichier ``app/config/parameters.yml`` contient tous les paramètres requis. Vous trouverez `ici une documentation détaillée concernant les paramètres `_. + +Si vous utilisez SQLite, vous devez également conserver le contenu du répertoire ``data/``. + +Videz le répertoire ``var/cache``. + +Vous allez devoir également exécuter des requêtes SQL pour mettre à jour votre base de données. Nous partons du principe que le préfixe de vos tables est ``wallabag_``. + +`Vous trouverez toutes les requêtes à exécuter ici `_. + + Mettre à jour de la 2.0.x à la 2.1.1 ------------------------------------ @@ -35,7 +92,7 @@ Téléchargez la version 2.1.1 de wallabag : .. code-block:: bash - wget https://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz + wget http://framabag.org/wallabag-release-2.1.1.tar.gz && tar xvf wallabag-release-2.1.1.tar.gz (hash md5 de l'archive 2.1.1 : ``9584a3b60a2b2a4de87f536548caac93``) @@ -59,39 +116,6 @@ Vous allez devoir également exécuter des requêtes SQL pour mettre à jour vot ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; -Mettre à jour de la 2.1.x à la 2.1.y ------------------------------------- - -Mise à jour sur un serveur dédié -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Pour mettre à jour votre installation de wallabag et récupérer la dernière version, exécutez la commande suivante dans votre répertoire d'installation : - -:: - - make update - -Mise à jour sur un hébergement mutualisé -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Effectuez une sauvegarde du fichier ``app/config/parameters.yml``. - -Téléchargez la dernière version de wallabag : - -.. code-block:: bash - - wget https://wllbg.org/latest-v2-package && tar xvf latest-v2-package - -Vous trouverez `le hash md5 du dernier package sur notre site `_. - -Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre. - -Merci de vérifier que votre fichier ``app/config/parameters.yml`` contient tous les paramètres requis. Vous trouverez `ici une documentation détaillée concernant les paramètres `_. - -Si vous utilisez SQLite, vous devez également conserver le contenu du répertoire ``data/``. - -Videz le répertoire ``var/cache``. - Depuis wallabag 1.x ------------------- diff --git a/scripts/update.sh b/scripts/update.sh index a29e0168f..e6ed58b7b 100644 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -16,4 +16,5 @@ git fetch --tags TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) git checkout $TAG --force SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist +php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV php bin/console cache:clear --env=$ENV