Php Symfony迁移失败

Php Symfony迁移失败,php,symfony1,migration,Php,Symfony1,Migration,我刚刚更改了正在处理的symfony项目的模式(添加了一个表和一些列),并运行了以下两个命令: php symfony doc:generate-migrations-diff php symfony doc:migrate 以前,这是没有任何问题的工作,但这次它吓坏了。我不小心给了两个表相同的名称,这是合理的失败,但现在我修复了我的模式文件,它仍然无法工作。它会产生以下错误: The following errors occurred:

我刚刚更改了正在处理的symfony项目的模式(添加了一个表和一些列),并运行了以下两个命令:

php symfony doc:generate-migrations-diff
php symfony doc:migrate
以前,这是没有任何问题的工作,但这次它吓坏了。我不小心给了两个表相同的名称,这是合理的失败,但现在我修复了我的模式文件,它仍然无法工作。它会产生以下错误:

  The following errors occurred:                                                                                                                                                                                                                                                                                           

   - SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'media_images' already exists. Failing Query: "CREATE TABLE media_images (id INT UNSIGNED AUTO_INCREMENT, name VARCHAR(255), start_date DATE, end_date DATE, website VARCHAR(255), location TEXT, description TEXT, PRIMARY KEY(id)) ENGINE = INNODB"  
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company_type'. Failing Query: "ALTER TABLE bio ADD company_type VARCHAR(255)"                                                                                                                                                                     
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company'. Failing Query: "ALTER TABLE bio ADD company VARCHAR(255)"                                                                                                                                                                               
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company_type'. Failing Query: "ALTER TABLE bio ADD company_type VARCHAR(255)"                                                                                                                                                                     
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company'. Failing Query: "ALTER TABLE bio ADD company VARCHAR(255)"                                                                                                                                                                               
   - SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'media_events' already exists. Failing Query: "CREATE TABLE media_events (id INT UNSIGNED AUTO_INCREMENT, name VARCHAR(255), start_date DATE, end_date DATE, website VARCHAR(255), location TEXT, description TEXT, PRIMARY KEY(id)) ENGINE = INNODB"  
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company_type'. Failing Query: "ALTER TABLE bio ADD company_type VARCHAR(255)"                                                                                                                                                                     
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company'. Failing Query: "ALTER TABLE bio ADD company VARCHAR(255)"                                                                                                                                                                               
   - SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'media_events' already exists. Failing Query: "CREATE TABLE media_events (id INT UNSIGNED AUTO_INCREMENT, name VARCHAR(255), start_date DATE, end_date DATE, website VARCHAR(255), location TEXT, description TEXT, PRIMARY KEY(id)) ENGINE = INNODB"  
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company_type'. Failing Query: "ALTER TABLE bio ADD company_type VARCHAR(255)"                                                                                                                                                                     
   - SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'company'. Failing Query: "ALTER TABLE bio ADD company VARCHAR(255)"             
大多数情况下,这是令人困惑的,因为它多次报告相同的错误。 我已经删除了/tmp/doctor\u schema\u[random\u number].yml文件并重试,没有成功。我还打开了mysql控制台,手动删除了它抱怨的表和列,但仍然产生了相同的错误


有什么想法吗

当迁移过程中出现问题时,您可能需要做一些事情才能回到正轨,具体取决于具体情况

如果您有一个迁移类部分工作(在版本中向上或向下),但有错误,那么您的数据库的模式在迁移之间不一致,并且可能无法向上或向下迁移。然后,下次尝试运行它时,由于已提交的更改,会出现更多错误

然后,您必须要么只应用缺少的更改,要么重新运行,直到成功。我可以通过临时注释迁移中已经成功的部分并纠正失败部分的问题来实现这一点。也可以通过数据库的管理工具手动完成,但您可能会遇到配置方式不完全相同的风险

有时,手动更改migration_version表中存储的值(使用非条令数据库工具)也很有用,以强制条令实现它位于不同的版本。然后尝试向下和向上迁移


此外,我强烈建议始终通过向上应用新迁移类来测试它们,然后在一个版本上再向上备份。原则中存在缺陷:生成迁移diff任务,特别是使用外键可以创建不可逆转的迁移。我发现在运行它们之前,需要手动编辑它们才能在两个方向上都有效。

当迁移过程中出现问题时,您可能需要做一些事情才能回到正轨,具体取决于具体情况

如果您有一个迁移类部分工作(在版本中向上或向下),但有错误,那么您的数据库的模式在迁移之间不一致,并且可能无法向上或向下迁移。然后,下次尝试运行它时,由于已提交的更改,会出现更多错误

然后,您必须要么只应用缺少的更改,要么重新运行,直到成功。我可以通过临时注释迁移中已经成功的部分并纠正失败部分的问题来实现这一点。也可以通过数据库的管理工具手动完成,但您可能会遇到配置方式不完全相同的风险

有时,手动更改migration_version表中存储的值(使用非条令数据库工具)也很有用,以强制条令实现它位于不同的版本。然后尝试向下和向上迁移


此外,我强烈建议始终通过向上应用新迁移类来测试它们,然后在一个版本上再向上备份。原则中存在缺陷:生成迁移diff任务,特别是使用外键可以创建不可逆转的迁移。我发现在运行它们之前,需要手动编辑它们才能在两个方向上都有效。

谢谢您的帮助。我最终删除了所有迁移数据,它认为它已恢复到0版,工作正常。感谢您的帮助。我最终只是删除了所有迁移数据,它认为它回到了版本0,工作正常。