Skip to content

Commit c4fe6d6

Browse files
author
Bryant Luk
committed
MAGETWO-35266: Update fails trying to recreate tables
- Add if check for table creation
1 parent f65cbac commit c4fe6d6

File tree

1 file changed

+131
-123
lines changed

1 file changed

+131
-123
lines changed

setup/src/Magento/Setup/Model/Installer.php

Lines changed: 131 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -644,30 +644,32 @@ private function setupSessionTable(
644644
SchemaSetupInterface $setup,
645645
\Magento\Framework\DB\Adapter\AdapterInterface $connection
646646
) {
647-
$table = $connection->newTable(
648-
$setup->getTable('session')
649-
)->addColumn(
650-
'session_id',
651-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
652-
255,
653-
['nullable' => false, 'primary' => true],
654-
'Session Id'
655-
)->addColumn(
656-
'session_expires',
657-
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
658-
null,
659-
['unsigned' => true, 'nullable' => false, 'default' => '0'],
660-
'Date of Session Expiration'
661-
)->addColumn(
662-
'session_data',
663-
\Magento\Framework\DB\Ddl\Table::TYPE_BLOB,
664-
'2M',
665-
['nullable' => false],
666-
'Session Data'
667-
)->setComment(
668-
'Database Sessions Storage'
669-
);
670-
$connection->createTable($table);
647+
if (!$connection->isTableExists($setup->getTable('session'))) {
648+
$table = $connection->newTable(
649+
$setup->getTable('session')
650+
)->addColumn(
651+
'session_id',
652+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
653+
255,
654+
['nullable' => false, 'primary' => true],
655+
'Session Id'
656+
)->addColumn(
657+
'session_expires',
658+
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
659+
null,
660+
['unsigned' => true, 'nullable' => false, 'default' => '0'],
661+
'Date of Session Expiration'
662+
)->addColumn(
663+
'session_data',
664+
\Magento\Framework\DB\Ddl\Table::TYPE_BLOB,
665+
'2M',
666+
['nullable' => false],
667+
'Session Data'
668+
)->setComment(
669+
'Database Sessions Storage'
670+
);
671+
$connection->createTable($table);
672+
}
671673
}
672674

673675
/**
@@ -681,45 +683,47 @@ private function setupCacheTable(
681683
SchemaSetupInterface $setup,
682684
\Magento\Framework\DB\Adapter\AdapterInterface $connection
683685
) {
684-
$table = $connection->newTable(
685-
$setup->getTable('cache')
686-
)->addColumn(
687-
'id',
688-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
689-
200,
690-
['nullable' => false, 'primary' => true],
691-
'Cache Id'
692-
)->addColumn(
693-
'data',
694-
\Magento\Framework\DB\Ddl\Table::TYPE_BLOB,
695-
'2M',
696-
[],
697-
'Cache Data'
698-
)->addColumn(
699-
'create_time',
700-
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
701-
null,
702-
[],
703-
'Cache Creation Time'
704-
)->addColumn(
705-
'update_time',
706-
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
707-
null,
708-
[],
709-
'Time of Cache Updating'
710-
)->addColumn(
711-
'expire_time',
712-
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
713-
null,
714-
[],
715-
'Cache Expiration Time'
716-
)->addIndex(
717-
$setup->getIdxName('cache', ['expire_time']),
718-
['expire_time']
719-
)->setComment(
720-
'Caches'
721-
);
722-
$connection->createTable($table);
686+
if (!$connection->isTableExists($setup->getTable('cache'))) {
687+
$table = $connection->newTable(
688+
$setup->getTable('cache')
689+
)->addColumn(
690+
'id',
691+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
692+
200,
693+
['nullable' => false, 'primary' => true],
694+
'Cache Id'
695+
)->addColumn(
696+
'data',
697+
\Magento\Framework\DB\Ddl\Table::TYPE_BLOB,
698+
'2M',
699+
[],
700+
'Cache Data'
701+
)->addColumn(
702+
'create_time',
703+
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
704+
null,
705+
[],
706+
'Cache Creation Time'
707+
)->addColumn(
708+
'update_time',
709+
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
710+
null,
711+
[],
712+
'Time of Cache Updating'
713+
)->addColumn(
714+
'expire_time',
715+
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
716+
null,
717+
[],
718+
'Cache Expiration Time'
719+
)->addIndex(
720+
$setup->getIdxName('cache', ['expire_time']),
721+
['expire_time']
722+
)->setComment(
723+
'Caches'
724+
);
725+
$connection->createTable($table);
726+
}
723727
}
724728

725729
/**
@@ -733,27 +737,29 @@ private function setupCacheTagTable(
733737
SchemaSetupInterface $setup,
734738
\Magento\Framework\DB\Adapter\AdapterInterface $connection
735739
) {
736-
$table = $connection->newTable(
737-
$setup->getTable('cache_tag')
738-
)->addColumn(
739-
'tag',
740-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
741-
100,
742-
['nullable' => false, 'primary' => true],
743-
'Tag'
744-
)->addColumn(
745-
'cache_id',
746-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
747-
200,
748-
['nullable' => false, 'primary' => true],
749-
'Cache Id'
750-
)->addIndex(
751-
$setup->getIdxName('cache_tag', ['cache_id']),
752-
['cache_id']
753-
)->setComment(
754-
'Tag Caches'
755-
);
756-
$connection->createTable($table);
740+
if (!$connection->isTableExists($setup->getTable('cache_tag'))) {
741+
$table = $connection->newTable(
742+
$setup->getTable('cache_tag')
743+
)->addColumn(
744+
'tag',
745+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
746+
100,
747+
['nullable' => false, 'primary' => true],
748+
'Tag'
749+
)->addColumn(
750+
'cache_id',
751+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
752+
200,
753+
['nullable' => false, 'primary' => true],
754+
'Cache Id'
755+
)->addIndex(
756+
$setup->getIdxName('cache_tag', ['cache_id']),
757+
['cache_id']
758+
)->setComment(
759+
'Tag Caches'
760+
);
761+
$connection->createTable($table);
762+
}
757763
}
758764

759765
/**
@@ -767,45 +773,47 @@ private function setupFlagTable(
767773
SchemaSetupInterface $setup,
768774
\Magento\Framework\DB\Adapter\AdapterInterface $connection
769775
) {
770-
$table = $connection->newTable(
771-
$setup->getTable('flag')
772-
)->addColumn(
773-
'flag_id',
774-
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
775-
null,
776-
['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
777-
'Flag Id'
778-
)->addColumn(
779-
'flag_code',
780-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
781-
255,
782-
['nullable' => false],
783-
'Flag Code'
784-
)->addColumn(
785-
'state',
786-
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
787-
null,
788-
['unsigned' => true, 'nullable' => false, 'default' => '0'],
789-
'Flag State'
790-
)->addColumn(
791-
'flag_data',
792-
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
793-
'64k',
794-
[],
795-
'Flag Data'
796-
)->addColumn(
797-
'last_update',
798-
\Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
799-
null,
800-
['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
801-
'Date of Last Flag Update'
802-
)->addIndex(
803-
$setup->getIdxName('flag', ['last_update']),
804-
['last_update']
805-
)->setComment(
806-
'Flag'
807-
);
808-
$connection->createTable($table);
776+
if (!$connection->isTableExists($setup->getTable('flag'))) {
777+
$table = $connection->newTable(
778+
$setup->getTable('flag')
779+
)->addColumn(
780+
'flag_id',
781+
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
782+
null,
783+
['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
784+
'Flag Id'
785+
)->addColumn(
786+
'flag_code',
787+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
788+
255,
789+
['nullable' => false],
790+
'Flag Code'
791+
)->addColumn(
792+
'state',
793+
\Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
794+
null,
795+
['unsigned' => true, 'nullable' => false, 'default' => '0'],
796+
'Flag State'
797+
)->addColumn(
798+
'flag_data',
799+
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
800+
'64k',
801+
[],
802+
'Flag Data'
803+
)->addColumn(
804+
'last_update',
805+
\Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
806+
null,
807+
['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT_UPDATE],
808+
'Date of Last Flag Update'
809+
)->addIndex(
810+
$setup->getIdxName('flag', ['last_update']),
811+
['last_update']
812+
)->setComment(
813+
'Flag'
814+
);
815+
$connection->createTable($table);
816+
}
809817
}
810818

811819
/**

0 commit comments

Comments
 (0)