我在我的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
正如你所看到的,我已经评论过这一点,我仍然继续犯错误。
我无法追踪仍被引用的位置。
答案 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中。它开始起作用了。