mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-20 01:09:56 +03:00
Ensured migrations are not transactional when run in mysql
This commit is contained in:
parent
bd3a59e9ca
commit
cd35770d26
33 changed files with 158 additions and 2 deletions
CHANGELOG.md
config/test
data
migrations
Version20160819142757.phpVersion20160820191203.phpVersion20171021093246.phpVersion20171022064541.phpVersion20180801183328.phpVersion20180913205455.phpVersion20180915110857.phpVersion20181020060559.phpVersion20181020065148.phpVersion20181110175521.phpVersion20190824075137.phpVersion20190930165521.phpVersion20191001201532.phpVersion20191020074522.phpVersion20200105165647.phpVersion20200106215144.phpVersion20200110182849.phpVersion20200323190014.phpVersion20200503170404.phpVersion20201023090929.phpVersion20201102113208.phpVersion20210102174433.phpVersion20210118153932.phpVersion20210202181026.phpVersion20210207100807.phpVersion20210306165711.phpVersion20210522051601.phpVersion20210522124633.phpVersion20210720143824.phpVersion20211002072605.php
migrations_template.txt
|
@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
* [#1210](https://github.com/shlinkio/shlink/issues/1210) Fixed real time updates not being notified.
|
* [#1210](https://github.com/shlinkio/shlink/issues/1210) Fixed real time updates not being notified.
|
||||||
|
* [#1211](https://github.com/shlinkio/shlink/issues/1211) Fixed `There is no active transaction` error when running migrations in MySQL/Mariadb after updating to doctrine-migrations 3.3.
|
||||||
|
|
||||||
|
|
||||||
## [2.9.1] - 2021-10-11
|
## [2.9.1] - 2021-10-11
|
||||||
|
|
|
@ -8,5 +8,5 @@ use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
/** @var ContainerInterface $container */
|
/** @var ContainerInterface $container */
|
||||||
$container = require __DIR__ . '/../container.php';
|
$container = require __DIR__ . '/../container.php';
|
||||||
$container->get(Helper\TestHelper::class)->createTestDb(['bin/cli', 'db:create'], ['bin/cli', 'db:migrate']);
|
$container->get(Helper\TestHelper::class)->createTestDb();
|
||||||
DbTest\DatabaseTestCase::setEntityManager($container->get('em'));
|
DbTest\DatabaseTestCase::setEntityManager($container->get('em'));
|
||||||
|
|
|
@ -39,6 +39,11 @@ class Version20160819142757 extends AbstractMigration
|
||||||
*/
|
*/
|
||||||
public function down(Schema $schema): void
|
public function down(Schema $schema): void
|
||||||
{
|
{
|
||||||
$db = $this->connection->getDatabasePlatform()->getName();
|
$this->connection->getDatabasePlatform()->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,4 +73,9 @@ class Version20160820191203 extends AbstractMigration
|
||||||
$schema->dropTable('short_urls_in_tags');
|
$schema->dropTable('short_urls_in_tags');
|
||||||
$schema->dropTable('tags');
|
$schema->dropTable('tags');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,4 +45,9 @@ class Version20171021093246 extends AbstractMigration
|
||||||
$shortUrls->dropColumn('valid_since');
|
$shortUrls->dropColumn('valid_since');
|
||||||
$shortUrls->dropColumn('valid_until');
|
$shortUrls->dropColumn('valid_until');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,4 +42,9 @@ class Version20171022064541 extends AbstractMigration
|
||||||
|
|
||||||
$shortUrls->dropColumn('max_visits');
|
$shortUrls->dropColumn('max_visits');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,4 +39,9 @@ final class Version20180801183328 extends AbstractMigration
|
||||||
{
|
{
|
||||||
$schema->getTable('short_urls')->getColumn('short_code')->setLength($size);
|
$schema->getTable('short_urls')->getColumn('short_code')->setLength($size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,4 +66,9 @@ final class Version20180913205455 extends AbstractMigration
|
||||||
{
|
{
|
||||||
// Nothing to rollback
|
// Nothing to rollback
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,4 +47,9 @@ final class Version20180915110857 extends AbstractMigration
|
||||||
{
|
{
|
||||||
// Nothing to run
|
// Nothing to run
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,4 +65,9 @@ final class Version20181020060559 extends AbstractMigration
|
||||||
{
|
{
|
||||||
// No down
|
// No down
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,4 +38,9 @@ final class Version20181020065148 extends AbstractMigration
|
||||||
{
|
{
|
||||||
// No down
|
// No down
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,4 +34,9 @@ final class Version20181110175521 extends AbstractMigration
|
||||||
{
|
{
|
||||||
return $schema->getTable('visits')->getColumn('user_agent');
|
return $schema->getTable('visits')->getColumn('user_agent');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,4 +34,9 @@ final class Version20190824075137 extends AbstractMigration
|
||||||
{
|
{
|
||||||
return $schema->getTable('visits')->getColumn('referer');
|
return $schema->getTable('visits')->getColumn('referer');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,4 +52,9 @@ final class Version20190930165521 extends AbstractMigration
|
||||||
$schema->getTable('short_urls')->dropColumn('domain_id');
|
$schema->getTable('short_urls')->dropColumn('domain_id');
|
||||||
$schema->dropTable('domains');
|
$schema->dropTable('domains');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,4 +46,9 @@ final class Version20191001201532 extends AbstractMigration
|
||||||
$shortUrls->dropIndex('unique_short_code_plus_domain');
|
$shortUrls->dropIndex('unique_short_code_plus_domain');
|
||||||
$shortUrls->addUniqueIndex(['short_code']);
|
$shortUrls->addUniqueIndex(['short_code']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,4 +34,9 @@ final class Version20191020074522 extends AbstractMigration
|
||||||
{
|
{
|
||||||
return $schema->getTable('short_urls')->getColumn('original_url');
|
return $schema->getTable('short_urls')->getColumn('original_url');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,4 +93,9 @@ final class Version20200105165647 extends AbstractMigration
|
||||||
$visitLocations->dropColumn($colName);
|
$visitLocations->dropColumn($colName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,4 +44,9 @@ final class Version20200106215144 extends AbstractMigration
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,4 +50,9 @@ final class Version20200110182849 extends AbstractMigration
|
||||||
{
|
{
|
||||||
// No need (and no way) to undo this migration
|
// No need (and no way) to undo this migration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,4 +42,9 @@ final class Version20200323190014 extends AbstractMigration
|
||||||
|
|
||||||
$visitLocations->dropColumn('is_empty');
|
$visitLocations->dropColumn('is_empty');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,4 +24,9 @@ final class Version20200503170404 extends AbstractMigration
|
||||||
$this->skipIf(! $visits->hasIndex(self::INDEX_NAME));
|
$this->skipIf(! $visits->hasIndex(self::INDEX_NAME));
|
||||||
$visits->dropIndex(self::INDEX_NAME);
|
$visits->dropIndex(self::INDEX_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,9 @@ final class Version20201023090929 extends AbstractMigration
|
||||||
$shortUrls->dropColumn('import_original_short_code');
|
$shortUrls->dropColumn('import_original_short_code');
|
||||||
$shortUrls->dropIndex('unique_imports');
|
$shortUrls->dropIndex('unique_imports');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,4 +83,9 @@ final class Version20201102113208 extends AbstractMigration
|
||||||
$shortUrls->removeForeignKey('FK_' . self::API_KEY_COLUMN);
|
$shortUrls->removeForeignKey('FK_' . self::API_KEY_COLUMN);
|
||||||
$shortUrls->dropColumn(self::API_KEY_COLUMN);
|
$shortUrls->dropColumn(self::API_KEY_COLUMN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,4 +49,9 @@ final class Version20210102174433 extends AbstractMigration
|
||||||
$schema->getTable(self::TABLE_NAME)->dropIndex('UQ_role_plus_api_key');
|
$schema->getTable(self::TABLE_NAME)->dropIndex('UQ_role_plus_api_key');
|
||||||
$schema->dropTable(self::TABLE_NAME);
|
$schema->dropTable(self::TABLE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,9 @@ final class Version20210118153932 extends AbstractMigration
|
||||||
public function down(Schema $schema): void
|
public function down(Schema $schema): void
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,4 +33,9 @@ final class Version20210202181026 extends AbstractMigration
|
||||||
$shortUrls->dropColumn(self::TITLE);
|
$shortUrls->dropColumn(self::TITLE);
|
||||||
$shortUrls->dropColumn('title_was_auto_resolved');
|
$shortUrls->dropColumn('title_was_auto_resolved');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,4 +40,9 @@ final class Version20210207100807 extends AbstractMigration
|
||||||
$visits->dropColumn('visited_url');
|
$visits->dropColumn('visited_url');
|
||||||
$visits->dropColumn('type');
|
$visits->dropColumn('type');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,4 +34,9 @@ final class Version20210306165711 extends AbstractMigration
|
||||||
|
|
||||||
$apiKeys->dropColumn(self::COLUMN);
|
$apiKeys->dropColumn(self::COLUMN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,9 @@ final class Version20210522051601 extends AbstractMigration
|
||||||
$this->skipIf(! $shortUrls->hasColumn('crawlable'));
|
$this->skipIf(! $shortUrls->hasColumn('crawlable'));
|
||||||
$shortUrls->dropColumn('crawlable');
|
$shortUrls->dropColumn('crawlable');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,9 @@ final class Version20210522124633 extends AbstractMigration
|
||||||
$this->skipIf(! $visits->hasColumn(self::POTENTIAL_BOT_COLUMN));
|
$this->skipIf(! $visits->hasColumn(self::POTENTIAL_BOT_COLUMN));
|
||||||
$visits->dropColumn(self::POTENTIAL_BOT_COLUMN);
|
$visits->dropColumn(self::POTENTIAL_BOT_COLUMN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,4 +38,9 @@ final class Version20210720143824 extends AbstractMigration
|
||||||
$domainsTable->dropColumn('regular_not_found_redirect');
|
$domainsTable->dropColumn('regular_not_found_redirect');
|
||||||
$domainsTable->dropColumn('invalid_short_url_redirect');
|
$domainsTable->dropColumn('invalid_short_url_redirect');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,9 @@ final class Version20211002072605 extends AbstractMigration
|
||||||
$this->skipIf(! $shortUrls->hasColumn('forward_query'));
|
$this->skipIf(! $shortUrls->hasColumn('forward_query'));
|
||||||
$shortUrls->dropColumn('forward_query');
|
$shortUrls->dropColumn('forward_query');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,4 +18,9 @@ final class <className> extends AbstractMigration
|
||||||
{
|
{
|
||||||
<down>
|
<down>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isTransactional(): bool
|
||||||
|
{
|
||||||
|
return $this->connection->getDatabasePlatform()->getName() !== 'mysql';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue