Shopware 客户导入错误:EntityManager 已关闭
Posted
技术标签:
【中文标题】Shopware 客户导入错误:EntityManager 已关闭【英文标题】:Shopware customer import error: The EntityManager is closed 【发布时间】:2018-01-16 21:06:55 【问题描述】:在将批量客户导入 Shopware 时,仅导入 CSV 中的第一行然后引发错误
“EntityManager 已关闭”。
如果我只尝试使用单个数据,它会导入客户,但也会抛出相同的错误“EntityManager 已关闭”。
在shopware/var/log/
中检查了core_production_date.log
和importexport.log
,那里没有日志。
还检查了Configureation->logfile
,也没有。
我怎样才能获得实际的错误日志,为什么会发生这种情况?请让我知道是否有人可以提供帮助。
Shopware 版本为 5.2.27
谢谢。
【问题讨论】:
【参考方案1】:EntityManager 关闭发生在请求的数据库上下文由于某些 SQL 异常而关闭时。 在我的项目中,这发生在使用 Shopware 的 Resource API 时,也可能被 Importer 使用。资源捕获错误,因此它不会显示在日志中。实体管理器由于 SQL 错误而按原则关闭,并且无法在同一请求中重新打开。因此,之后的任何调用都会以“EntityManager is closed”消息告终。
如果您找到一种在控制台中运行导入的方法,其中的错误至少会显示为控制台日志,这会有所帮助。您还可以查看资源本身,了解哪些数据可能错误或丢失。
【讨论】:
【参考方案2】:您可以使用 try..catch 并在 catch 子句中重置 EntityManager,如果它已关闭(您应该从 扩展您的 API 类),例如:
try
... you code ...
catch (\Exception $e)
if (!$this->getManager()->isOpen())
$this->resetEntityManager();
...
【讨论】:
以上是关于Shopware 客户导入错误:EntityManager 已关闭的主要内容,如果未能解决你的问题,请参考以下文章
Shopware 6:bin/watch-storefront.sh 导致 chrome 出现 CORS 错误
Composer 更新 - 无法在 http://packagist.org 中加载软件包 shopware/shopware: