gpt4 book ai didi

postgresql - 如何永久删除 Doctrine 迁移?

转载 作者:行者123 更新时间:2023-12-04 07:51:46 25 4
gpt4 key购买 nike

如何执行 迁移并且只有我现有的实体可视化了吗?
问题是:

  • 我从迁移中删除了所有版本文件
  • 我删除了公共(public)架构
  • 我创建了新的架构 public
  • 我做了一个 make:migration
  • 我做了一个 Doctrine :migrations:migrate

  • 旧数据出现了——我的意思是没有实体并且很久以前就被删除的表。
    架构已创建,但包含冗余和不必要的数据。
    如何 总计重置迁移?是否有任何缓存可以保存删除的表(不考虑迁移版本)?
    这是我最新的迁移文件 - 我想做一个迁移,但我没有这样的表,例如 user_to_offert_user .
    请不要给我手动解决方案-我知道我可以在迁移之前对其进行修改,但是每次我要更改某些内容时,这样做对我来说似乎毫无意义。
    如果有不清楚的地方,请问我。我试图尽可能多地指定问题。
    附加信息:
    我到底在做什么:
  • 我删除了 全部 迁移的版本。
  • 我截断了所有数据
  • 我删除了我的公共(public)架构
  • 我创建了新的公共(public)架构
  • 我运行 bin/console make:migration
  • 我运行 bin/console Doctrine :迁移:迁移

  • 这是我的大问题:
    我有这种实体:
    Entities
    当我运行迁移时,所有这些表都显示:
    Tables
    如您所见,表太多了。其中一些我很久以前就放弃了,它们仍然出现在每次迁移中。
    我不知道怎么过,我很绝望,因为我在第 3 天就一直在解决这个问题。
    我在 Heroku 上有我的数据库 - 我使用 Postgres,当我删除所有表时,它们不会显示在 Heroku 中:
    enter image description here
    这是此迁移的代码:
    <?php

    declare(strict_types=1);

    namespace DoctrineMigrations;

    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;

    /**
    * Auto-generated Migration: Please modify to your needs!
    */
    final class Version20210403092535 extends AbstractMigration
    {
    public function getDescription() : string
    {
    return '';
    }

    public function up(Schema $schema) : void
    {
    // this up() migration is auto-generated, please modify it to your needs
    $this->addSql('CREATE SEQUENCE requirement_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
    $this->addSql('CREATE SEQUENCE skill_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
    $this->addSql('CREATE SEQUENCE "user_id_seq" INCREMENT BY 1 MINVALUE 1 START 1');
    $this->addSql('CREATE SEQUENCE user_to_offert_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
    $this->addSql('CREATE TABLE login_history (id SERIAL NOT NULL, user_id_id INT NOT NULL, login_date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, login_status BOOLEAN NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE INDEX IDX_37976E369D86650F ON login_history (user_id_id)');
    $this->addSql('CREATE TABLE offert (id SERIAL NOT NULL, event_firm_id INT NOT NULL, event_name VARCHAR(100) NOT NULL, date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, description VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE INDEX IDX_44229184CF8D1CF ON offert (event_firm_id)');
    $this->addSql('CREATE TABLE requirement (id INT NOT NULL, requirement VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE TABLE requirement_user (requirement_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(requirement_id, user_id))');
    $this->addSql('CREATE INDEX IDX_598D28707B576F77 ON requirement_user (requirement_id)');
    $this->addSql('CREATE INDEX IDX_598D2870A76ED395 ON requirement_user (user_id)');
    $this->addSql('CREATE TABLE skill (id INT NOT NULL, skill VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE TABLE skill_user (skill_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(skill_id, user_id))');
    $this->addSql('CREATE INDEX IDX_CAD24AFB5585C142 ON skill_user (skill_id)');
    $this->addSql('CREATE INDEX IDX_CAD24AFBA76ED395 ON skill_user (user_id)');
    $this->addSql('CREATE TABLE "user" (id INT NOT NULL, user_details_id_id INT NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, account_type VARCHAR(100) NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D64912595E8 ON "user" (user_details_id_id)');
    $this->addSql('CREATE TABLE user_details (id SERIAL NOT NULL, name VARCHAR(255) NOT NULL, surname VARCHAR(255) NOT NULL, description VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE TABLE user_to_offert (id INT NOT NULL, hired BOOLEAN NOT NULL, PRIMARY KEY(id))');
    $this->addSql('CREATE TABLE user_to_offert_offert (user_to_offert_id INT NOT NULL, offert_id INT NOT NULL, PRIMARY KEY(user_to_offert_id, offert_id))');
    $this->addSql('CREATE INDEX IDX_4AA1878F8C2827E4 ON user_to_offert_offert (user_to_offert_id)');
    $this->addSql('CREATE INDEX IDX_4AA1878F3D478C97 ON user_to_offert_offert (offert_id)');
    $this->addSql('CREATE TABLE user_to_offert_user (user_to_offert_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(user_to_offert_id, user_id))');
    $this->addSql('CREATE INDEX IDX_7BE6CF748C2827E4 ON user_to_offert_user (user_to_offert_id)');
    $this->addSql('CREATE INDEX IDX_7BE6CF74A76ED395 ON user_to_offert_user (user_id)');
    $this->addSql('ALTER TABLE login_history ADD CONSTRAINT FK_37976E369D86650F FOREIGN KEY (user_id_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE offert ADD CONSTRAINT FK_44229184CF8D1CF FOREIGN KEY (event_firm_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE requirement_user ADD CONSTRAINT FK_598D28707B576F77 FOREIGN KEY (requirement_id) REFERENCES requirement (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE requirement_user ADD CONSTRAINT FK_598D2870A76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE skill_user ADD CONSTRAINT FK_CAD24AFB5585C142 FOREIGN KEY (skill_id) REFERENCES skill (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE skill_user ADD CONSTRAINT FK_CAD24AFBA76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE "user" ADD CONSTRAINT FK_8D93D64912595E8 FOREIGN KEY (user_details_id_id) REFERENCES user_details (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE user_to_offert_offert ADD CONSTRAINT FK_4AA1878F8C2827E4 FOREIGN KEY (user_to_offert_id) REFERENCES user_to_offert (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE user_to_offert_offert ADD CONSTRAINT FK_4AA1878F3D478C97 FOREIGN KEY (offert_id) REFERENCES offert (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE user_to_offert_user ADD CONSTRAINT FK_7BE6CF748C2827E4 FOREIGN KEY (user_to_offert_id) REFERENCES user_to_offert (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    $this->addSql('ALTER TABLE user_to_offert_user ADD CONSTRAINT FK_7BE6CF74A76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
    }

    public function down(Schema $schema) : void
    {
    // this down() migration is auto-generated, please modify it to your needs
    $this->addSql('CREATE SCHEMA public');
    $this->addSql('ALTER TABLE user_to_offert_offert DROP CONSTRAINT FK_4AA1878F3D478C97');
    $this->addSql('ALTER TABLE requirement_user DROP CONSTRAINT FK_598D28707B576F77');
    $this->addSql('ALTER TABLE skill_user DROP CONSTRAINT FK_CAD24AFB5585C142');
    $this->addSql('ALTER TABLE login_history DROP CONSTRAINT FK_37976E369D86650F');
    $this->addSql('ALTER TABLE offert DROP CONSTRAINT FK_44229184CF8D1CF');
    $this->addSql('ALTER TABLE requirement_user DROP CONSTRAINT FK_598D2870A76ED395');
    $this->addSql('ALTER TABLE skill_user DROP CONSTRAINT FK_CAD24AFBA76ED395');
    $this->addSql('ALTER TABLE user_to_offert_user DROP CONSTRAINT FK_7BE6CF74A76ED395');
    $this->addSql('ALTER TABLE "user" DROP CONSTRAINT FK_8D93D64912595E8');
    $this->addSql('ALTER TABLE user_to_offert_offert DROP CONSTRAINT FK_4AA1878F8C2827E4');
    $this->addSql('ALTER TABLE user_to_offert_user DROP CONSTRAINT FK_7BE6CF748C2827E4');
    $this->addSql('DROP SEQUENCE requirement_id_seq CASCADE');
    $this->addSql('DROP SEQUENCE skill_id_seq CASCADE');
    $this->addSql('DROP SEQUENCE "user_id_seq" CASCADE');
    $this->addSql('DROP SEQUENCE user_to_offert_id_seq CASCADE');
    $this->addSql('DROP TABLE login_history');
    $this->addSql('DROP TABLE offert');
    $this->addSql('DROP TABLE requirement');
    $this->addSql('DROP TABLE requirement_user');
    $this->addSql('DROP TABLE skill');
    $this->addSql('DROP TABLE skill_user');
    $this->addSql('DROP TABLE "user"');
    $this->addSql('DROP TABLE user_details');
    $this->addSql('DROP TABLE user_to_offert');
    $this->addSql('DROP TABLE user_to_offert_offert');
    $this->addSql('DROP TABLE user_to_offert_user');
    }
    }

    最佳答案

    Doctrine MigrationsBundle 有一个表,它存储先前运行的迁移的信息。如果您重置迁移,您还必须重置该表。您可以为此使用汇总命令:

    php bin/console doctrine:migrations:rollup
    如果这不起作用,您可能需要手动更改表格,例如在迁移中,但如果可能的话,你应该避免这种情况。默认情况下,该表名为 doctrine_migration_versions ,但您可以使用 debug:config检查您的配置是否不同的命令:
    php bin/console debug:config doctrine_migrations storage
    这是默认情况下的外观:
    doctrine_migrations:
    # ...
    storage:
    # Default (SQL table) metadata storage configuration
    table_storage:
    table_name: 'doctrine_migration_versions'
    version_column_name: 'version'
    version_column_length: 1024
    executed_at_column_name: 'executed_at'

    关于postgresql - 如何永久删除 Doctrine 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66928876/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com