首页 > 解决方案 > Doctrine\Common\Persistence\Mapping\Driver 丢失

问题描述

抱歉,今天我在 Symfony 上发生了一些奇怪的事情。我正在和一个朋友开发一个 web 应用程序,并决定今天早上运行一个作曲家更新。之前一切正常,但是一旦作曲家更新完成,我得到一个缓存:清除错误。这是关于如何Doctrine\Common\Persistence\ManagerRegistry;在几个存储库中找不到的,所以我尝试使用可以解决Doctrine\Persistence\ManagerRegistry所有问题的 PhpStorm 自动完成。问题是,一旦我在所有存储库上更正了该错误,我在尝试运行时收到以下错误php bin/console

Symfony\Component\ErrorHandler\Error\ClassNotFoundError^ {#4524
  #message: """
    Attempted to load class "MappingDriverChain" from namespace "Doctrine\Common\Persistence\Mapping\Driver".\n
    Did you forget a "use" statement for "Doctrine\Persistence\Mapping\Driver\MappingDriverChain"?
    """
  #code: 0
  #file: "./var/cache/dev/ContainerO7VJLRg/App_KernelDevDebugContainer.php"
  #line: 1223
  trace: {
    ./var/cache/dev/ContainerO7VJLRg/App_KernelDevDebugContainer.php:1223 {
      ContainerO7VJLRg\App_KernelDevDebugContainer->getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true)^
      › 
      › $b = new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain();
      › 
    }
    ./var/cache/dev/ContainerO7VJLRg/App_KernelDevDebugContainer.php:6427 { …}
    ./var/cache/dev/ContainerO7VJLRg/App_KernelDevDebugContainer.php:6472 { …}
    ./var/cache/dev/ContainerO7VJLRg/App_KernelDevDebugContainer.php:899 { …}
    ./vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php:90 { …}
    ./vendor/symfony/http-kernel/Kernel.php:572 { …}
    ./vendor/symfony/http-kernel/Kernel.php:131 { …}
    ./vendor/symfony/framework-bundle/Console/Application.php:168 { …}
    ./vendor/symfony/framework-bundle/Console/Application.php:74 { …}
    ./vendor/symfony/console/Application.php:140 { …}
    ./bin/console:42 { …}
  }
}

我与没有同样问题的同事分享了它。他运行作曲家更新,并没有任何问题。所以我决定将我的更改推送到不同的存储库,然后克隆项目并重试。和以前一样的错误。

在那之后,我决定从头开始创建一个新的 symfony 网站并将文件移过来(在拉取他的更改之后),(configs/src/templates/public 等)它就像一个魅力,bin/console完美运行,symfony server:start为页面服务很好所以我们决定,很酷,让我们把它移到我们的共享存储库中,他将尝试克隆它并运行 composer install。

一旦他这样做,他就会得到与我完全相同的错误。

我尝试将项目克隆到另一个文件夹,并且发生了完全相同的情况。

顺便说一句,尽管缓存清除不起作用,我们在每一步都消除了缓存文件夹。

我认为这与symfony/orm-pack更新到 2.0.0 版本有关,但我们降级了它,它没有解决任何问题。

Symfony 版本(我们俩)是 5.1 我们正在使用的附加库是:不确定这是否有帮助data-dog/audit-bundleramsey/uuid-doctrine

标签: phpsymfonydoctrinecomposer-phpsymfony5

解决方案


很抱歉没有早点回复,但我们发现了错误。

它确实与教义的版本有关。在 git 上,我们在更新 composer json 时传递了旧的 composer.lock 文件,因此为什么在我们克隆它后错误又回来了。

基本上,尽管我们指定 orm-pack 的 2.0.0 版本,但是 composer.lock 总是将其限制为 1.8,并且两个版本之间的命名空间和教义的文件夹结构都发生了变化。

一旦我们删除了 composer.lock 并更新了 composer 一切正常。


推荐阅读