5

我在我的 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

如您所见,我已对此进行了评论,但我仍在继续收到错误消息。

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

4

3 回答 3

9

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

就我和这里的大多数其他人而言,这发生在删除 SonataAdminBundle 时,由于某种原因,它像难闻的气味一样四处游荡。我尝试删除数据库并在其他不起作用的情况下再次恢复它。

所以下面的 hack 似乎得到了 # Doctrine Configuration

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

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

于 2015-04-22T14:27:12.290 回答
3

当我从实体中删除一个字段并删除类型定义本身时,我收到了这个错误(不同的列类型)。在我引入类型定义并仅删除该字段后,没有错误。我做了模式更新,然后我可以一起删除类型。

也许对您来说更好的解决方案是完全删除数据库并从头开始执行教义:模式:更新。

于 2013-07-25T12:12:29.563 回答
0

安装 sonataadminbundle 后发生在我身上,之后我将其卸载。

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

于 2014-10-31T20:37:06.213 回答