删除奏鸣曲包

时间:2013-07-24 19:33:18

标签: symfony symfony-sonata

我在我的Symfony 2应用程序上安装了几个Sonata软件包(用户,管理员等),但在使用它们一段时间后,我觉得我不喜欢它们并想要删除它们。

我已经更新了我的composer.json和AppKernel.php文件,删除了与Sonata有关的任何内容。我还删除了所有相关的路由,配置和安全文件条目。但是,我现在无法更新我的数据库架构。

每次运行时都会出现以下错误:

[Doctrine\DBAL\DBALException]                                                
  Unknown column type "json" requested. Any Doctrine type that you use has to  
   be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a lis  
  t of all the known types with \Doctrine\DBAL\Types\Type::getTypeMap(). If t  
  his error occurs during database introspection then you might have forgot t  
  o register all database types for a Doctrine Type. Use AbstractPlatform#reg  
  isterDoctrineTypeMapping() or have your custom types implement Type#getMapp  
  edDatabaseTypes(). If the type name is empty you might have a problem with   
  the cache or forgot some mapping information.

我知道这是来自其中一个Sonata捆绑包的Doctrine配置:

# Doctrine Configuration doctrine:
dbal:
    driver:   %database_driver%
    host:     %database_host%
    port:     %database_port%
    dbname:   %database_name%
    user:     %database_user%
    password: %database_password%
    charset:  UTF8
    #types:
#    json: Sonata\Doctrine\Types\JsonType

正如你所看到的,我已经评论过这一点,我仍然继续犯错误。

我无法追踪仍被引用的位置。

3 个答案:

答案 0 :(得分:9)

我和大多数人一样有同样的问题。以前安装SonataAdminBundle时遇到了问题,但如果您正在安装SonataAdminBundle并且无法正常工作,则可能存在问题。如果是这种情况,请参阅此链接:https://github.com/sonata-project/SonataAdminBundle/issues/811

在我的情况下,以及大多数其他人在这里,这种情况发生在删除SonataAdminBundle时,出于某种原因,它就像一股难闻的气味一样徘徊。我尝试删除数据库并在其他无法正常工作的情况下重新恢复数据库。

所以下面的黑客似乎得到了#Protrine配置

doctrine:
    dbal:
        ...
        types: #this is about this line and line below
            json:     \Doctrine\DBAL\Types\StringType      

绝对不是一个完美的解决方法,但是应该让事情恢复到原来的状态,直到你真正需要JsonType,然后你就可以引入类型了。

答案 1 :(得分:3)

当我从实体中删除字段并删除了类型定义本身时,我收到了此错误(不同的列类型)。在我介绍了类型定义并且只删除了字段之后没有错误。我做了架构更新,然后我可以一起删除所有类型。

也许更好的解决方案是完全删除数据库并执行doctrine:schema:从头开始更新。

答案 2 :(得分:0)

安装了sonataadminbundle之后发生了这件事,之后我将其卸载了。

Sonata更新fos_user表,以便在“roles”列中接收json信息。因此,当我卸载奏鸣曲时,我开始出现此错误,但我所做的是将Sonata \ Doctrine \ Type \ JsonType创建到我的Doctrine \ Type中。它开始起作用了。