首页 > 解决方案 > Symfony:基表或视图已经存在:1050 表'migration_versions'已经存在

问题描述

我对我的迁移版本做了一些可怕的错误,现在从迁移文件夹中删除了版本,当我尝试运行与迁移有关的任何内容时出现此错误。有人能指出我从哪里开始解决这个问题吗?

如果我删除数据库然后make:migration,该migration_versions表将出现在 db 中。之后,如果我尝试运行

php bin/console doctrine:migrations:migrate

我得到错误:

In AbstractMySQLDriver.php line 38:

  An exception occurred while executing 'CREATE TABLE migration_versions (version VARCHAR(14) NOT NULL, executed_at   
  DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', PRIMARY KEY(version)) DEFAULT CHARACTER SET utf8mb4 COLL  
  ATE `utf8mb4_unicode_ci` ENGINE = InnoDB':                                                                          

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migration_versions' already exists                  


In PDOConnection.php line 43:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migration_versions' already exists  


In PDOConnection.php line 41:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'migration_versions' already exists  

如果我然后从数据库中删除该表,我就可以运行php bin\console doctrine:migrations:migrate良好。但是,当尝试运行任何进一步的make:migration/命令时,我得到与先前说明该表存在doctrine:migrations:migrate的相同错误。migration_versions

标签: phpmysqlsymfonydoctrine

解决方案


由于我的配置中的 schema_filter,我也遇到了同样的问题。我的学说.yaml 文件(Symfony 4)有以下内容:

doctrine:
    dbal:
        schema_filter: ~^(table_1|table_2|table_3)$~

我必须像这样简单地将“migration_versions”添加到模式过滤器中:

doctrine:
    dbal:
        schema_filter: ~^(migration_versions|table_1|table_2|table_3)$~

推荐阅读