无法使用 sonataClassificationBundle 更新数据库 symfony 4

Posted

技术标签:

【中文标题】无法使用 sonataClassificationBundle 更新数据库 symfony 4【英文标题】:can't update database symfony 4 with sonataClassificationBundle 【发布时间】:2018-12-28 21:22:03 【问题描述】:

我使用 Symfony 4.1

在配置完 SonataMediaBundle 和 SonataClassificationBundle 后安装它们。 你想执行命令

php bin/console 原则:schema:update --force

你得到了这个错误

The table with name 'shop.classification__collection' already exists.

对于所有其他分类表(如类别和标签)相同 如果您尝试将classification__collection实体中的表名更改为classification_collection

你会得到第二个类似的错误

An exception occurred while executing 'CREATE UNIQUE INDEX tag_collection ON classification__collection (slug, context): SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

【问题讨论】:

【参考方案1】:

我最近遇到这个问题并找到解决方案。

问题在这里解决

https://github.com/sonata-project/SonataClassificationBundle/issues/407

你只需要通过分类删除App/Entity中创建的实体或将类重新映射到sonata.yaml和sonata_classification.yaml中的App/Entity

如果您删除了 App/Entity 中的实体,请将以下配置添加到您的 sonata.yaml 和 sonata_classification.yaml

/** sonata_classification.yaml**/

sonata_classification:
    class:
       tag: App\Application\Sonata\ClassificationBundle\Entity\Tag
       category: App\Application\Sonata\ClassificationBundle\Entity\Category
       media: App\Application\Sonata\MediaBundle\Entity\Media
       collection: App\Application\Sonata\ClassificationBundle\Entity\Collection
       context: App\Application\Sonata\ClassificationBundle\Entity\Context

/**奏鸣曲.yaml**/

class:
    media: App\Application\Sonata\MediaBundle\Entity\Media
    gallery: App\Application\Sonata\MediaBundle\Entity\Gallery
    gallery_has_media: App\Application\Sonata\MediaBundle\Entity\GalleryHasMedia
    category: App\Application\Sonata\ClassificationBundle\Entity\Category

【讨论】:

以上是关于无法使用 sonataClassificationBundle 更新数据库 symfony 4的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

LINUX下的mail\mailx为啥无法使用外部SMTP发邮件