]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Fix utf8mb4 on vendor tables 3758/head
authorJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 28 Nov 2018 19:26:18 +0000 (20:26 +0100)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 28 Nov 2018 21:04:55 +0000 (22:04 +0100)
When creating the schema for test these tables use default length for
string: 255. Which fail when using utf8mb4.

> Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Also move the `setKeepStaticConnections` in before and after class to
avoid:

> SAVEPOINT DOCTRINE2_SAVEPOINT_2 does not exist

See https://github.com/dmaicher/doctrine-test-bundle#troubleshooting

app/DoctrineMigrations/Version20180405182455.php
app/DoctrineMigrations/Version20181128203230.php [new file with mode: 0644]
src/Wallabag/ApiBundle/Entity/AccessToken.php
src/Wallabag/ApiBundle/Entity/AuthCode.php
src/Wallabag/ApiBundle/Entity/RefreshToken.php
tests/Wallabag/CoreBundle/Command/InstallCommandTest.php

index 71879c0ea57350fb4634c11c737578f122bc593c..50fe97c76e44194939c446bc8eba19487cf2b6a9 100755 (executable)
@@ -2,26 +2,14 @@
 
 namespace Application\Migrations;
 
-use Doctrine\DBAL\Migrations\AbstractMigration;
 use Doctrine\DBAL\Schema\Schema;
-use Symfony\Component\DependencyInjection\ContainerAwareInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
+use Wallabag\CoreBundle\Doctrine\WallabagMigration;
 
 /**
  * Add archived_at column and set its value to updated_at for is_archived entries.
  */
-class Version20180405182455 extends AbstractMigration implements ContainerAwareInterface
+class Version20180405182455 extends WallabagMigration
 {
-    /**
-     * @var ContainerInterface
-     */
-    private $container;
-
-    public function setContainer(ContainerInterface $container = null)
-    {
-        $this->container = $container;
-    }
-
     /**
      * @param Schema $schema
      */
@@ -60,9 +48,4 @@ class Version20180405182455 extends AbstractMigration implements ContainerAwareI
 
         $entryTable->dropColumn('archived_at');
     }
-
-    private function getTable($tableName)
-    {
-        return $this->container->getParameter('database_table_prefix') . $tableName;
-    }
 }
diff --git a/app/DoctrineMigrations/Version20181128203230.php b/app/DoctrineMigrations/Version20181128203230.php
new file mode 100644 (file)
index 0000000..d1b09fc
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+namespace Application\Migrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Wallabag\CoreBundle\Doctrine\WallabagMigration;
+
+/**
+ * Fix varchar field from vendor to work with utf8mb4.
+ */
+class Version20181128203230 extends WallabagMigration
+{
+    /**
+     * @param Schema $schema
+     */
+    public function up(Schema $schema)
+    {
+        $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration can only be applied on \'mysql\'.');
+
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' CHANGE `token` `token` varchar(191) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' CHANGE `scope` `scope` varchar(191)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' CHANGE `token` `token` varchar(191) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' CHANGE `scope` `scope` varchar(191)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' CHANGE `token` `token` varchar(191) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' CHANGE `scope` `scope` varchar(191)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `name` `name` varchar(191)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `section` `section` varchar(191)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `value` `value` varchar(191)');
+    }
+
+    public function down(Schema $schema)
+    {
+        $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration can only be applied on \'mysql\'.');
+
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' CHANGE `token` `token` varchar(255) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_access_tokens') . ' CHANGE `scope` `scope` varchar(255)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' CHANGE `token` `token` varchar(255) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_auth_codes') . ' CHANGE `scope` `scope` varchar(255)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' CHANGE `token` `token` varchar(255) NOT NULL');
+        $this->addSql('ALTER TABLE ' . $this->getTable('oauth2_refresh_tokens') . ' CHANGE `scope` `scope` varchar(255)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `name` `name` varchar(255)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `section` `section` varchar(255)');
+        $this->addSql('ALTER TABLE ' . $this->getTable('craue_config_setting') . ' CHANGE `value` `value` varchar(255)');
+    }
+}
index c09a0c803a44467b7b62f241c2fca65cf54b2b39..5e4099dddc8aa1b506c199d9c79f4dcccb3c9eeb 100644 (file)
@@ -8,6 +8,22 @@ use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken;
 /**
  * @ORM\Table("oauth2_access_tokens")
  * @ORM\Entity
+ * @ORM\AttributeOverrides({
+ *     @ORM\AttributeOverride(name="token",
+ *         column=@ORM\Column(
+ *             name   = "token",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     ),
+ *     @ORM\AttributeOverride(name="scope",
+ *         column=@ORM\Column(
+ *             name   = "scope",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     )
+ * })
  */
 class AccessToken extends BaseAccessToken
 {
index 4d4b09fea7178ac9fed0f1bec0483db96d89d331..5fa205ac7ad54d5e9540f1c02b8712293cd2bce4 100644 (file)
@@ -8,6 +8,22 @@ use FOS\OAuthServerBundle\Entity\AuthCode as BaseAuthCode;
 /**
  * @ORM\Table("oauth2_auth_codes")
  * @ORM\Entity
+ * @ORM\AttributeOverrides({
+ *     @ORM\AttributeOverride(name="token",
+ *         column=@ORM\Column(
+ *             name   = "token",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     ),
+ *     @ORM\AttributeOverride(name="scope",
+ *         column=@ORM\Column(
+ *             name   = "scope",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     )
+ * })
  */
 class AuthCode extends BaseAuthCode
 {
index 822a02d8d5753b84baedcadb660f2c0f2636c758..dd8e9c63e5469e8e72801ae660e54ca95fe6ad6e 100644 (file)
@@ -8,6 +8,22 @@ use FOS\OAuthServerBundle\Entity\RefreshToken as BaseRefreshToken;
 /**
  * @ORM\Table("oauth2_refresh_tokens")
  * @ORM\Entity
+ * @ORM\AttributeOverrides({
+ *     @ORM\AttributeOverride(name="token",
+ *         column=@ORM\Column(
+ *             name   = "token",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     ),
+ *     @ORM\AttributeOverride(name="scope",
+ *         column=@ORM\Column(
+ *             name   = "scope",
+ *             type   = "string",
+ *             length = 191
+ *         )
+ *     )
+ * })
  */
 class RefreshToken extends BaseRefreshToken
 {
index 0868540842c7cb6de9b5fb16b9c9e05d5c753518..d8928451121aa045b6dba6b22a3e7643852ebd34 100644 (file)
@@ -18,6 +18,18 @@ use Wallabag\CoreBundle\Command\InstallCommand;
 
 class InstallCommandTest extends WallabagCoreTestCase
 {
+    public static function setUpBeforeClass()
+    {
+        // disable doctrine-test-bundle
+        StaticDriver::setKeepStaticConnections(false);
+    }
+
+    public static function tearDownAfterClass()
+    {
+        // enable doctrine-test-bundle
+        StaticDriver::setKeepStaticConnections(true);
+    }
+
     public function setUp()
     {
         parent::setUp();
@@ -51,9 +63,6 @@ class InstallCommandTest extends WallabagCoreTestCase
             parent::setUp();
         }
 
-        // disable doctrine-test-bundle
-        StaticDriver::setKeepStaticConnections(false);
-
         $this->resetDatabase($this->getClient());
     }
 
@@ -72,8 +81,6 @@ class InstallCommandTest extends WallabagCoreTestCase
             $this->resetDatabase($client);
         }
 
-        // enable doctrine-test-bundle
-        StaticDriver::setKeepStaticConnections(true);
         parent::tearDown();
     }