簡體   English   中英

Symfony:基表或視圖已存在:1050 表“migration_versions”已存在

[英]Symfony: Base table or view already exists: 1050 Table 'migration_versions' already exists

我對我的遷移版本做了一些可怕的錯誤,現在從遷移文件夾中刪除了版本,當我嘗試運行與遷移有關的任何內容時出現此錯誤。 有人能指出我從哪里開始解決這個問題嗎?

如果我刪除數據庫然后make:migration ,則migration_versions表將出現在數據庫中。 之后,如果我嘗試運行

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存在。

由於我的配置中的 schema_filter,我也遇到了同樣的問題。 我的 doctrine.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)$~

我有一個類似的問題,我只想更改一個字段名稱。

更改字段名並嘗試使用兩個命令遷移該字段名后發生了同樣的問題。

我用以下方法修復了它:

  • 我刪除了數據庫內容和遷移/版本文件。
  • 是否bin/console make:migration
  • bin/console doctrine:migrations:migrate

它再次起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM