harden migrations
This commit is contained in:
@@ -17,7 +17,7 @@ final class Version20260221000300 extends AbstractMigration
|
|||||||
public function up(Schema $schema): void
|
public function up(Schema $schema): void
|
||||||
{
|
{
|
||||||
$this->addSql("
|
$this->addSql("
|
||||||
CREATE TABLE tag_rebuild_job (
|
CREATE TABLE IF NOT EXISTS tag_rebuild_job (
|
||||||
id BINARY(16) NOT NULL,
|
id BINARY(16) NOT NULL,
|
||||||
status VARCHAR(16) NOT NULL,
|
status VARCHAR(16) NOT NULL,
|
||||||
created_at DATETIME NOT NULL,
|
created_at DATETIME NOT NULL,
|
||||||
|
|||||||
@@ -17,19 +17,51 @@ final class Version20260225000200 extends AbstractMigration
|
|||||||
public function up(Schema $schema): void
|
public function up(Schema $schema): void
|
||||||
{
|
{
|
||||||
$this->addSql('ALTER TABLE knowledge_tag CHANGE description description LONGTEXT DEFAULT NULL');
|
$this->addSql('ALTER TABLE knowledge_tag CHANGE description description LONGTEXT DEFAULT NULL');
|
||||||
$this->addSql('ALTER TABLE knowledge_tag RENAME INDEX uniq_knowledge_tag_slug TO UNIQ_86B46255989D9B62');
|
|
||||||
|
if ($this->indexExists('knowledge_tag', 'uniq_knowledge_tag_slug')) {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE knowledge_tag RENAME INDEX uniq_knowledge_tag_slug TO UNIQ_86B46255989D9B62'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$this->addSql('ALTER TABLE document DROP FOREIGN KEY FK_D8698A769407EE77');
|
$this->addSql('ALTER TABLE document DROP FOREIGN KEY FK_D8698A769407EE77');
|
||||||
$this->addSql('ALTER TABLE document ADD CONSTRAINT FK_D8698A769407EE77 FOREIGN KEY (current_version_id) REFERENCES document_version (id)');
|
$this->addSql('ALTER TABLE document ADD CONSTRAINT FK_D8698A769407EE77 FOREIGN KEY (current_version_id) REFERENCES document_version (id)');
|
||||||
|
|
||||||
$this->addSql('ALTER TABLE tag_rebuild_job CHANGE error_message error_message LONGTEXT DEFAULT NULL');
|
$this->addSql('ALTER TABLE tag_rebuild_job CHANGE error_message error_message LONGTEXT DEFAULT NULL');
|
||||||
|
|
||||||
$this->addSql('ALTER TABLE document_tag RENAME INDEX idx_document_tag_document TO IDX_D0234567C33F7837');
|
if ($this->indexExists('document_tag', 'idx_document_tag_document')) {
|
||||||
$this->addSql('ALTER TABLE document_tag RENAME INDEX idx_document_tag_tag TO IDX_D0234567BAD26311');
|
$this->addSql(
|
||||||
|
'ALTER TABLE document_tag RENAME INDEX idx_document_tag_document TO IDX_D0234567C33F7837'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->indexExists('document_tag', 'idx_document_tag_tag')) {
|
||||||
|
$this->addSql(
|
||||||
|
'ALTER TABLE document_tag RENAME INDEX idx_document_tag_tag TO IDX_D0234567BAD26311'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function indexExists(string $table, string $index): bool
|
||||||
|
{
|
||||||
|
$count = (int) $this->connection->fetchOne(
|
||||||
|
<<<SQL
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE()
|
||||||
|
AND TABLE_NAME = :table
|
||||||
|
AND INDEX_NAME = :index
|
||||||
|
SQL,
|
||||||
|
[
|
||||||
|
'table' => $table,
|
||||||
|
'index' => $index,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
return $count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
public function down(Schema $schema): void
|
||||||
{
|
{
|
||||||
// Optional – in Drift-Fix-Migration meist nicht notwendig
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user