Каждый раз, когда я создаю новую миграцию, есть изменения, которые я хочу, но есть и некоторые изменения, которых не должно быть.Они одинаковы в каждой новой миграции.
Так что, если я создам новую миграцию без каких-либо изменений, будут присутствовать только те нежелательные изменения.Если я запусту миграцию и сделаю новую, эти изменения все еще будут здесь.Возможно, я сделал что-то не так, я бы хотел «почистить», чтобы перестать каждый раз удалять эти изменения вручную.
Я нахожусь в проекте под управлением Symfony 4.2.3 с Doctrine ORM v2.6.3,на MariaDB 10.3.14.
Итак, вот миграция, которая должна быть пустой:
final class Version20190412133855 extends AbstractMigration
{
// ...
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE player CHANGE race_id race_id INT DEFAULT NULL, CHANGE team_id team_id INT DEFAULT NULL, CHANGE country_id country_id INT DEFAULT NULL, CHANGE birthdate birthdate DATE DEFAULT NULL');
$this->addSql('ALTER TABLE clan_war CHANGE winner_id winner_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE team CHANGE country_id country_id INT DEFAULT NULL, CHANGE manager manager VARCHAR(255) DEFAULT NULL, CHANGE coach coach VARCHAR(255) DEFAULT NULL, CHANGE website website VARCHAR(255) DEFAULT NULL');
$this->addSql('ALTER TABLE map CHANGE tileset_id tileset_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE game CHANGE map_id map_id INT DEFAULT NULL, CHANGE winner_id winner_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE game RENAME INDEX idx_7a5bc50553c55f64 TO IDX_232B318C53C55F64');
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE clan_war CHANGE winner_id winner_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE game CHANGE map_id map_id INT DEFAULT NULL, CHANGE winner_id winner_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE game RENAME INDEX idx_232b318c53c55f64 TO IDX_7A5BC50553C55F64');
$this->addSql('ALTER TABLE map CHANGE tileset_id tileset_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE player CHANGE race_id race_id INT DEFAULT NULL, CHANGE team_id team_id INT DEFAULT NULL, CHANGE country_id country_id INT DEFAULT NULL, CHANGE birthdate birthdate DATE DEFAULT \'NULL\'');
$this->addSql('ALTER TABLE team CHANGE country_id country_id INT DEFAULT NULL, CHANGE manager manager VARCHAR(255) DEFAULT \'NULL\' COLLATE utf8mb4_unicode_ci, CHANGE coach coach VARCHAR(255) DEFAULT \'NULL\' COLLATE utf8mb4_unicode_ci, CHANGE website website VARCHAR(255) DEFAULT \'NULL\' COLLATE utf8mb4_unicode_ci');
}
}
Все эти «изменения» фактически уже внесены в базу данных.Есть еще одна небольшая проблема: сгенерированный запрос ALTER TABLE game RENAME INDEX idx_7a5bc50553c55f64 TO IDX_232B318C53C55F64
, который недопустим для MariaDB.Если я не удаляю этот запрос, я получу синтаксическую ошибку.И, как я уже сказал: если я удалю этот, миграция будет выполняться без проблем, но такая же новая миграция появится, если я создам новый.
В другом проекте с той же конфигурацией, если ясделать новую миграцию без каких-либо изменений, я получаю ожидаемый [WARNING] No database changes were detected.
.Если я сделаю одно изменение, я получу только то, что хочу.Возможно, я сделал что-то не так в аннотациях в моих сущностях, так что на всякий случай вот одна из моделей (игрок): https://pastebin.com/1mUPP3i3
Спасибо за вашу помощь